2012-12-01 28 views
1

正如您從下面的代碼中看到的那樣,當我單擊項目(項目1,項目2或項目3)時,我的TextView將顯示字符串「項目1「,」項目2「或」項目3「。使用TextView顯示ListView中項目的其他信息

但是,我希望TextView顯示的是有關該項目的其他信息,例如名稱,聯繫人等,當我單擊該項目時。

我想不出我該怎麼做。任何人都可以提供一些建議

public class ListA extends ListActivity { 
    private TextView selection; 
    private static final String[] items={"Item 1", "Item 2", "Item 3"}; 

    @Override 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.activity_list); 
    setListAdapter(new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, 
        items)); 
selection=(TextView)findViewById(R.id.selection); 
    } 

    @Override 
    public void onListItemClick(ListView parent, View v, int position, 
           long id) { 
    selection.setText(items[position]); 
    } 
} 

回答

1

我認爲您可以使用getItemAtPosition(position)來獲取選定的項目作爲對象。然後你可以使用這個對象的信息。

0

在這種情況下,您應該使用BaseAdapter。看到這個步驟。 http://anujarosha.wordpress.com/2011/11/30/how-to-use-baseadapter-and-onitemclicklistener-in-android/

編輯:

您必須實現BaseAdapter因爲ArrayAdapter可以只顯示一個字符串。

看到我的實現,它有一個Item列表。每個項目都包含一個名稱和聯繫人。

您需要設置此BaseAdapter來代替ArrayAdapter。

BaseAdapter通過從方法getView()中的佈局膨脹來創建視圖。該佈局有兩個TextView。

在該方法中,我們還將名稱和聯繫人設置爲兩個TextView。

public class Item 
{ 
    private String name; 
    private String contact; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getContact() { 
     return contact; 
    } 
    public void setContact(String contact) { 
     this.contact = contact; 
    } 


} 

public class Adapter1 extends BaseAdapter 
{ 
    private List<Item> items; 
    private LayoutInflator inflator; 
    public Adapter1(List<Item> items, LayoutInflator inflator) { 
     super(); 
     this.items = items; 
        this.inflator = inflator; 
    } 

    @Override 
    public int getCount() { 
     return items.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return items.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View view; 

     if(convertView != null) 
      view = convertView; 
     else 
      view = inflator.inflate(R.layout.item_layout, parent, false); 

     Item item = (Item) getItem(position); 

     ((TextView) view.findViewById(R.id.textName)).setText(item.getName()); 
     ((TextView) view.findViewById(R.id.textContact)).setText(item.getContact()); 

     return view; 
    } 

} 
1

您可以使用ArrayList,只是去嘗試這個代碼,

mList = new ArrayList<String>(); 
    mList.add("Item 1"); 
    mList.add("Item 2"); 
    mList.add("Item 3"); 
    mList.add("Item 4"); 
    mList.add("Item 5"); 

併爲onItemClick代碼:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    super.onListItemClick(l, v, position, id); 
    selection.setText(mList.get(position)); 
}