使用适配器动态更新listview

del*_*116 69 android listview

教程使用SimpleAdapter工作正常,但我需要在输入新数据时更新适配器中的数组.

你能否指导我如何使用SimpleAdapter以外的东西更新ListView?

Rob*_*ond 136

使用由ArrayList支持的ArrayAdapter.要更改数据,只需更新列表中的数据并调用adapter.notifyDataSetChanged().

  • 打败我.:)虽然你也可以在SimpleAdapter上调用notifyDataSetChanged(). (4认同)

lee*_*ech 26

如果您创建自己的适配器,则有一个值得注意的抽象函数:

public void registerDataSetObserver(DataSetObserver observer) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

您可以使用给定的观察者通知系统更新:

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

public void registerDataSetObserver(DataSetObserver observer) {
    observers.add(observer);
}
public void notifyDataSetChanged(){
    for (DataSetObserver observer: observers) {
        observer.onChanged();
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然你不高兴有SimpleAdapter和ArrayAdapter这样的东西,你不必做所有这些吗?