gpt4 book ai didi

java - 在 ListAdapter (ListView) 中重新填充数据的最佳方式

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:06 24 4
gpt4 key购买 nike

我确实使用此代码在 ListView 更改后用数据重新填充

// ListView lv;
// MyListAdapter la;
// DataClass dc;
dc.remove(object_id);
lv.setAdapter(la);

这是最好的方法吗,因为我们不能使用仅在 ArrayAdapter 中可用的 notifyDataSetChanged()

解决方案

 //MyListAdapter.java

private ArrayList<DataSetObserver> observers = new ArrayList<DataSetObserver>();

public void registerDataSetObserver(DataSetObserver arg0) {
observers.add(arg0);
}

public void unregisterDataSetObserver(DataSetObserver arg0) {
observers.remove(arg0);
}

public void notifyDataSetChange() {
for (DataSetObserver d : observers) {
d.onChanged();
}
}

public void remove(int position) {
[DataClass object].remove(position);
notifyDataSetChange();
}

最佳答案

对于 CursorAdapter我使用以下代码:

mAdapter.getCursor().requery();

如果您正在使用自定义适配器或如您评论的那样:只希望 ListAdapter 作为成员变量。而不是使用 private CustomAdapter mAdapter;(我会推荐给 avoid creating unnecessary objects)。

您可以使用 DataSetObserver部分和ListAdapter.registerDataSetObserver(DataSetObserver observer) . DataSetObserver.onChanged()将由 BaseAdapter 实现调用,因此它应该适用于所有适配器。

BaseAdapter.notifyDataSetChanged():

public void notifyDataSetChanged() {
mDataSetObservable.notifyChanged();
}

关于java - 在 ListAdapter (ListView) 中重新填充数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626575/

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