加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 替换ArrayAdapter的列表

发布时间:2020-12-15 04:43:51 所属栏目:Java 来源:网络整理
导读:我有一个使用ArrayList OrderedProductItem的自定义ArrayAdapter.对于我的ListView.在这个ListView中,我有一个AutoCompleteTextView,它也使用带有ArrayList Product的自定义ArrayAdapter.在初始化时,此AutoCompleteTextView包含所有产品的名称(大约1250),减1
我有一个使用ArrayList< OrderedProductItem>的自定义ArrayAdapter.对于我的ListView.在这个ListView中,我有一个AutoCompleteTextView,它也使用带有ArrayList< Product>的自定义ArrayAdapter.在初始化时,此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);

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

// NOTE: myAdapter.setNotifyOnChange is kept on default (true)
myAdapter.clear();
myAdapter.addAll(myList);

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

解决方法

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

public void updateData(ArrayList<T> list){
 mAdapterProductList=list;
}

现在,无论何时您想更新数据,请使用以下代码:

adpter.updateData(mUpdatedList);
adapter.notifyDataSetChanges();

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读