8

如何从 Android 中的 ArrayAdapter 检索底层 ArrayList?

这是可能的还是我需要单独跟踪它们?

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
ArrayList<String> underlying = 
4

4 回答 4

5

你可以这样做来获得底层ArrayList

ArrayList<String> underlying =  = new ArrayList<String>();
for (int i = 0; i < adapter .getCount(); i++)
    underlying .add(adapter .getItem(i));
于 2013-05-01T06:54:46.973 回答
1

我认为,如果您没有此功能,您可以通过扩展 BaseAdapter 来轻松创建适合您需求的适配器。

只需通过其 CTOR 将列表发送到适配器,然后您可以稍后从适配器外部更改它,并在完成后调用 notifyDataSetChanged。

不过要注意:如果您有适配器列表的原始实例,您应该处理多线程问题(或仅通过 UI 线程访问它),如果您修改它(尤其是添加/删除项目),您应该总是调用 notifyDataSetChanged 。

于 2013-05-01T07:03:54.097 回答
0

不同的方法,但很可能满足您的需求:从“ArrayAdapter”扩展您的适配器,在外部声明数组,然后在创建适配器时将数组传递给构造函数

//Adapter Declaration
class MyArrayAdapter extends ArrayAdapter<MyType> {}

//Externally declared ArrayList:
ArrayList<MyType> myList = new ArrayList<MyType>();

//Adapter Instantiation (in your activity)
MyArrayAdapter adapter = new MyArrayAdapter(this, myList);
于 2015-08-26T06:00:12.670 回答
-2

这很容易。您需要获取适配器并使用 clear() 方法。

 ((myArrayAdapter)myListView.getAdapter()).clear();
于 2015-11-20T17:07:20.953 回答