2014-02-17 98 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項看起來像一個填充彩色圖像和文本。