替换ArrayAdapter的数据集

时间:2015-11-11 13:35:53

标签: android listview

在Android中,您可以在为ArrayList创建ArrayAdapter时提供ListView。我需要更新ArrayList中的一些项目。

通常的方法是致电notifyDatasetChanged。我更喜欢做的是将整个数据重新加载到我的数据库中的新ArrayList,然后将新的ArrayList应用于现有的ArrayAdapter,但不创建新的适配器。创建新适配器将导致ListView变为空白并从位置0开始。如果用户正在滚动并且我突然重新创建了一个新适配器,这也是显而易见的。

是否可以将全新ArrayList应用于现有适配器?我想要这样做的主要原因是,只需重新加载包含所有数据的新ArrayList,而不必通过现有ArrayList并插入,删除或更新现有项目。< / p>

1 个答案:

答案 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);