2013-10-22 76 views
0

我有這樣的項目的數組:如何在ListView的每個項目中存儲多個值?

items[0] = "Item 1"; 
items[1] = "Item 2"; 
... 

我填滿我的ListView列表1本:

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

而且我得到的項目價值是這樣的:

list1.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String a = parent.getAdapter().getItem(position).toString(); 
     ... 

而且工作,但我真的需要在每個項目中存儲更多的值。例如,我想要一個名爲「First item」的項目出現在列表中,但是當我點擊它時,我會得到一個關聯值,如數字。

例子:

items[0] = {7,"First item"}; 
items[1] = {100,"Second item"}; 

我想只有「第一項」和「第二項」出現在列表中,但是當我點擊它,我找回了整數,在這種情況下,7爲「第一項「,100爲」第二項「。

我該如何做到這樣?謝謝!

+0

使用'JSON String' –

+0

使用地圖和簡單適配器 – njzk2

回答

1

爲什麼不將返回值存儲在第二個數組中?

items[0] = "first item"; 
items[1] = "second item"; 
value[0] = 7; 
value[1] = 100; 

然後從值陣列搶返回值:

Log.i("SELECTED",item[position]); 
Log.i("RETURNED",value[position]); 
1

您需要實現自定義適配器,而不是使用ArrayAdapter。有一個可以實現的BaseAdapter類,並且可以使用SparseArray作爲一組數據。 SparseArrays是通用的,並通過索引提供getter,它正是你需要提供ListView的東西。

3

您可以使用HashMap到Key作爲第一項和值存儲爲和喜歡明智的。

String[] items = { "First item", "Second item", "Third item"}; 

HashMap<String, Integer> hashmap=new HashMap<String, Integer>(); 

      hashmap.put("First item", 7); 
      hashmap.put("Second item", 100); 
      hashmap.put("Third item", 200); 

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

list1.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String textValue = parent.getAdapter().getItem(position).toString(); 
     int value=hashmap.get(textValue); 
     System.out.println(textValue); 
     System.out.println(value+""); 
     } 

O/P:當在第一項點擊。

10-22 13:57:49.778: I/System.out(1038): First item 
10-22 13:57:49.778: I/System.out(1038): 7 

希望這對你有所幫助。

相關問題