2013-10-22 55 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 

希望这对你有所帮助。

相关问题