替换ArrayAdapter列表

Kev*_*sen 4 java android arraylist android-arrayadapter notifydatasetchanged

我有一个自定义ArrayAdapter,它使用ArrayList<OrderedProductItem>我的ListView.在这个ListView中,我有一个AutoCompleteTextView,它也使用了一个自定义ArrayAdapter ArrayList<Product>.在初始化时,此AutoCompleteTextView包含所有产品的名称(大约1250),减1(OrderedProductItem的产品).

然后,用户可以使用Spinner选择Product-Tag并创建过滤ArrayList<Product>,因此我只获得包含此Product-Tag的所有产品的列表(仍然减去1).所以,我的问题是:替换ArrayAdapter对象列表的最佳方法什么?

我知道我可以在ListActivity中重新创建并重新分配一个新的ArrayAdapter实例:

myAdapter = new MyAdapter(this, R.layout.item_view, myList);
setListAdapter(myAdapter);
Run Code Online (Sandbox Code Playgroud)

我也知道我可以使用clear然后使用addAll替换所有内容:

// NOTE: myAdapter.setNotifyOnChange is kept on default (true)
myAdapter.clear();
myAdapter.addAll(myList);
Run Code Online (Sandbox Code Playgroud)

我想第二个可能是最好的,因为我们不想每次都创建一个新实例,或者ArrayAdapter是否有类似的方法setArray(),我只是在寻找时错过了它?或者是否有另一种方式比第二种选择更好的性能?

Pra*_*shy 11

在这里,您要更改customAdapter的数据,在适配器中创建公共方法

public void updateData(ArrayList<T> list){
 mAdapterProductList=list;
}
Run Code Online (Sandbox Code Playgroud)

现在,无论何时你想更新数据,都要使用以下代码:

adpter.updateData(mUpdatedList);
adapter.notifyDataSetChanges();
Run Code Online (Sandbox Code Playgroud)

无需重新实例化您的适配器