2012-02-14 78 views
0

返回资源阵列我定义为一个ListView如下:如何从一个ListView

<ListView 
android:key="key1" 
android:title="@string/title" 
android:summary="@string/summary" 
android:entries="@array/options" 
android:entryValues="@array/values" /> 

条目&值在XML文件中指定的,你可以看到。我如何以编程方式从ListView中获取条目数组?

沿着这个东西线:

ListView myListView = this.findViewById(R.layout.my_layout); 
String[] myListViewEntries = context.getResources().getStringArray(myListView.???????); 

任何帮助,将不胜感激。

请不要告诉我硬编码一个数组名(例如“R.array.some_array”),这必须使用ListView对象完成,而不是数组名的硬编码。

感谢

回答

1

我想你可以通过调用myListView.getAdapter()应返回用于创建列表条目适配器实现这一目标。届时您可以添加/编辑/删除适配器中的项目以进一步修改您的列表。

这是怎么了,你可以从适配器检索您的字符串数组:

String[] array = getStringArray(myListView.getAdapter()); 

和您的静态方法:

public static String[] getStringArray(ListAdapter adapter){ 
     String[] a = new String[adapter.getCount()]; 

     for(int i=0; i<a.length; i++) 
      a[i] = adapter.getItem(i).toString(); 

     return a; 
    } 
+0

你可以调用什么方法来形成适配器来返回数组? – 2012-02-14 20:28:53

+0

我看到它有一个'getItem(int i)'方法。有没有方法返回一个数组,或者我必须循环并从所有项目手动创建数组? – 2012-02-14 20:30:45

+0

是的,你需要遍历所有项目来创建你自己的数组。但仍然比硬编码更好,不是吗? :) – waqaslam 2012-02-14 20:36:38

0

你可以得到所有从适配器的元素

ListAdapter adapter = ListView.getAdapter() 

然后你可以遍历所有元素

for(int i = 0; i < adapter.getCount(); i++) { 
    doSomethingWithElement(adapter.getItem(i)); 
} 
相关问题