2014-02-17 37 views
0

我对Android应用程序的工作,目前,我有以下代码:编辑的ListView文本

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background_main" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/display_result" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="25dp" 
     android:textSize="20pt" 
     android:textColor="#FFFFFF" 
     android:visibility="invisible" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="22dp" > 
    </ListView> 
</RelativeLayout> 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.AdapterView.OnItemClickListener; 

public class MainActivity extends Activity { 
    private TextView tv; 
    private MediaPlayer player = null; 
    ListView listV; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv = (TextView)findViewById(R.id.display_result); 
     listV = (ListView)findViewById(R.id.listView1); 
     final Intent i = new Intent(this,BActivity.class); 


     String[] values = new String[] { "C 2 F", "F 2 C", "Currency"}; 

     ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values); 

     listV.setAdapter(arrayAdapter); 

     listV.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

       int itemPosition  = position; 

       if(itemPosition == 0) 
       { 
       i.putExtra("identify", "c2f"); 
       startActivityForResult(i, 1); 
       if(player != null) 
        player.stop(); 
       } 
       else if(itemPosition == 1) 
       { 
        i.putExtra("identify", "f2c"); 
        startActivityForResult(i, 1); 
        if(player != null) 
         player.stop(); 
       } 
       else if(itemPosition == 2) 
       { 
        i.putExtra("identify", "currency"); 
        startActivityForResult(i, 1); 
        if(player != null) 
         player.stop(); 
       } 


      } 

     }); 
    } 
    protected void onDestroy() 
    { 
     super.onDestroy(); 
     player.stop(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

      if (requestCode == 1) { 
      if(resultCode == RESULT_OK){  
       String result=data.getStringExtra("result"); 
       tv.setVisibility(View.VISIBLE); 
       tv.setText(result); 

       player = MediaPlayer.create(this, R.raw.sound); 
       player.start(); 
      } 

      } 
     } 

} 

这一切都运作良好,但是ListView控件的显示效果非常小的黑色文本神韵:左边,我想改变它居中和增加大小,也有任何简单的方法来包括图片和文字在列表视图。我对它进行了很多搜索,但它们都非常难以理解,请告诉我在我的代码中需要做些什么修改才能编辑listView文本。

+0

您将需要使用带有textview的自定义布局 – Raghunandan

+0

http://www.youtube.com/watch?v=WRANgDgM2Zg请查看本教程。您需要为列表项目创建布局,然后编写您自己的适配器。本教程涵盖了R.layout.row中的基本知识 –

回答

2

您需要使用TextView进行其他布局。自定义以下布局以满足您的需求。您可以增加文字大小更改文字颜色,并以您想要的方式自定义文字视图。

row.xml。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="41dp" 
     android:text="TextView" /> 

</RelativeLayout> 

然后

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.row,R.id.textView1, values); 

enter image description here

+0

错误,行无法解析或者不是字段 –

+0

@AbdulJabbar您必须创建该文件.. – Enrichman

+0

@AbdulJabbar您需要在'res下的名称行/布局/ row.xml'。请从顶部到底部阅读答案 – Raghunandan

1

ListView的所有布局都由Adapter给出。你正在使用简单的ArrayAdapter和simple_list_item_1(这是一个简单的TextView)。

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, values); 

好:这很简单,正如你所见。
不好:除了一串字符串,你不能做太多事情。

如果您想要包含图像,更多TextView或其他好东西,您必须创建一个自定义适配器,覆盖ArrayAdapter或另一个适配器,作为BaseAdapter。

Here您可以通过Vogella找到一个简单的教程。

正如你所看到的,所有的工作都是在getView方法中完成的,所有的“创建”都在这里完成。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    textView.setText(values[position]); 
    // change the icon for Windows and iPhone 
    String s = values[position]; 
    if (s.startsWith("iPhone")) { 
     imageView.setImageResource(R.drawable.no); 
    } else { 
     imageView.setImageResource(R.drawable.ok); 
    } 

    return rowView; 
} 

在开始时,您将不得不“膨胀”(创建)该行。从该行开始,您将“查找”视图并分别在行的位置上设置项目。

性能注:

,因为Android将回收行,你应该检查一下线路已经创建。所以,只需检查,膨胀和包装所有的代码之前,如果convertView为空或不。

0

这是你的row.xml用的ImageView和TextView的。这是您的列表项目看起来的一种方式。

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_height="@dimen/item_height" 
     android:layout_width="match_parent"> 

     <ImageView 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/item_image" 
      android:layout_width="60dp" 
      android:layout_height="60dp"/>   
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/item_image" 
      android:id="@+id/item_label"/>   
</RelativeLayout> 

然后,您需要创建自定义适配器,例如,的StringArrayAdapter

public class SampleAdapter extends ArrayAdapter<String> { 

    private LayoutInflater layoutInflater; 

    public SampleAdapter(Context context, ArrayList<String> data) { 
     super(context, R.layout.adapter_deals_list_fragment, data); 
     this.layoutInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder; 
     String item = getItem(position); 
     if (convertView == null) { 
      convertView = layoutInflater.inflate(R.layout.row, parent, false); 
      viewHolder = new ViewHolder(convertView); 
      convertView.setTag(viewHolder); 
     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 
     viewHolder.imageView.setImageDrawable(new ColorDrawable(Color.parseColor("#ffaa66cc"))); 
     viewHolder.textView.setText(item); 
     return convertView; 
    } 

    private class ViewHolder { 
     ImageView imageView; 
     TextView textView; 

     public ViewHolder(View view) { 
      imageView = (ImageView) view.findViewById(R.id.item_image); 
      textView = (TextView) view.findViewById(R.id.item_label); 
     } 
    } 
} 

之后做YOUT Activity类是这样的:

SampleAdapter sampleAdapter = new SampleAdapter(this, new String[]{"lorem", "ipsum", "dolar"}); 
ListView listView = (ListView) findViewById(R.id.listview1); 
listView.setAdapter(sampleAdapter); 

至于导致您的ListView项看起来像一个填充彩色图像和文本。