gpt4 book ai didi

android - 什么比较贵?每次数据更改或更新现有 ArrayAdapter 时创建一个新的 ArrayAdapter?

转载 作者:搜寻专家 更新时间:2023-11-01 08:00:16 27 4
gpt4 key购买 nike

要更新 Listview 我们可以做以下两件事:

1) 创建一个新的ArrayAdapter,并在每次更新数据时将其绑定(bind)到ListView。

this.listView.setAdapter(new ArrayAdapter(getActivity(), data));

2) 更新已经绑定(bind)到 listview 的 ArrayAdapter 的内容:

this.arrayadapter.clear();
for (Data item : data)
this.arrayadapter.add(item);
this.arrayadapter.notifyDataSetChanged();

那么哪种方法成本更高呢?

最佳答案

按照你的做法,第二个肯定更贵。 ArrayAdapterclear()add() 内部调用 notifyDataSetChanged()。你可以把它改成

this.arrayadapter.setNotifyOnChange(false);
this.arrayadapter.clear();
for (Data item : data)
this.arrayadapter.add(item);
this.arrayadapter.setNotifyOnChange(true);
this.arrayadapter.notifyDataSetChanged();

但即使你这样做,两个调用都包含一个同步块(synchronized block),这会使它们变慢。因此,即使您在第一种方法中创建了一个新的 ArrayAdapter,我还是认为它更快。

您可以通过使用带有 setItems(data) 方法的自定义适配器来进一步优化它,该方法仅替换内部数据列表。

关于android - 什么比较贵?每次数据更改或更新现有 ArrayAdapter 时创建一个新的 ArrayAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205380/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com