在Android中,您可以在为ArrayList
创建ArrayAdapter
时提供ListView
。我需要更新ArrayList
中的一些项目。
通常的方法是致电notifyDatasetChanged
。我更喜欢做的是将整个数据重新加载到我的数据库中的新ArrayList
,然后将新的ArrayList
应用于现有的ArrayAdapter
,但不创建新的适配器。创建新适配器将导致ListView
变为空白并从位置0开始。如果用户正在滚动并且我突然重新创建了一个新适配器,这也是显而易见的。
是否可以将全新ArrayList
应用于现有适配器?我想要这样做的主要原因是,只需重新加载包含所有数据的新ArrayList
,而不必通过现有ArrayList
并插入,删除或更新现有项目。< / p>
答案 0 :(得分:0)
1)首先。您需要使用自定义ArrayAdapter(或SimpleAdapter或RecycleViewAdapter)
2)在自定义适配器中创建功能:
// Initialize your list;
private ArrayList<Model> arrayList;
.....
//Create constructor and past starting ArrayList
public MyAdapter (ArrayList<Model> array) {
this.arrayList = array;
}
......
public void updateMyData (ArrayList array) {
clear();
// Or you can use arrayList.addAll(array); - just add new items
this.arrayList = array;
notifyDataSetChange();
}
.....
3)在您的Activity中(或初始化适配器的位置) 只需使用这样的代码:
MyAdapter myAdapter = new MyAdapter(startArratListData);
// And Than for updating data:
myAdapter.updateMyData(newArrayListData);