2011-07-22 36 views
3

我在網上看到的所有示例僅包含1個TextView,並且它們從數組中加載數據。我不明白我該如何指定哪些數據在哪裏。例如我的項目佈局看起來像這樣:帶有2個TextViews的Android ListView每個項目

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

    <TextView android:id="@+id/receiver" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <TextView android:id="@+id/message" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

如何保存數據中的數據,以便它可以在此佈局的ListView中使用?

回答

0

使用適配器爲數據提供列表視圖。並且,當您使用getView()方法提供數據時,將數據添加到這些TextView中。還有成千上萬的在網絡上的例子...

下面是一個例子(關於這些代碼的改進可以做着,當然)

@Override 
    public View getView(int position, View convertView, ViewGroup parent) throws NullPointerException { 
     ViewHold viewHold; 
     if (convertView == null) 
     { 
     LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = vi.inflate(R.layout.temp2, null); 
     viewHold = new ViewHold();   
     viewHold.go = (Button)convertView.findViewById(R.id.gotherefav); 
     viewHold.remove = (Button)convertView.findViewById(R.id.removefav); 

     convertView.setTag(viewHold); 
     } 
     else 
     { 
      viewHold=(ViewHold)convertView.getTag(); 
     } 


    String t = items.get(position); 
    if (t != null) { 

      TextView itemText = (TextView) convertView.findViewById(R.id.item); // here you add data from arrayLists 
     TextView itemText2 = (TextView) convertView.findViewById(R.id.item2); 
itemText2.setText(t); 

      itemText.setText(t); 
      itemText.invalidate(); 


      } 
    viewHold.go.setVisibility(View.GONE); 
    viewHold.remove.setVisibility(View.GONE); 


    return convertView; 

    } 
} 
2

這裏是自定義列表適配器:

private class ListAdapter extends ArrayAdapter<RSSItem> { 

     private List<Item> items; 

     public ListAdapter(Context context, int textViewResourceId, List<Item> items) { 
      super(context, textViewResourceId, items); 
      this.items = items; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 

      if (v == null) { 
       LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.list_item, null); 
      } 

      Item item = items.get(position); 

      if (item != null) {    
       TextView title = (TextView) v.findViewById(R.id.tvTitle); 
       TextView description = (TextView) v.findViewById(R.id.tvDescription); 
       if (title != null) { 
        title.setText(item.getTitle()); 
       } 
       if (description != null) { 
        description.setText(item.toString()); 
       } 
      } 

      return v; 
     } 
    } 

這是一個項目類,女巫將持有您的數據:

public class Item { 
    private String title = null; 
    private String description = null; 

    RSSItem() { 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public String getData() { 
     return data; 
    } 
} 

...這裏是一個類,使用它可以採取一切列表數據在某些類型的數組:

public class ListData { 
    private int itemcount = 0; 
    private List<Item> itemlist; 

    ListData() { 
     itemlist = new Vector<Item>(); 
    } 

    int addItem(Item item) { 
     itemlist.add(item); 
     itemcount++; 
     return itemcount; 
    } 

    Item getItem(int location) { 
     return itemlist.get(location); 
    } 

    List<Item> getAllItems() { 
     return itemlist; 
    } 

    int getItemCount() { 
     return itemcount; 
    } 
} 

在主類(活動)應填寫正確的數據。

相關問題