我有一个AsyncTask,可以从Internet下载数据,创建少于30个MyObject对象,并将其添加到列表中。最后,我将创建一个MyAdapter并将列表作为参数传递,并将MyAdapter设置为回收者视图适配器:

 myList.add(new MyObject("aa", "bb", cc"); //for each piece of data by Internet
 MyAdapter myAdapter = new MyAdapter(myList);
 recyclerView.setAdapter(myAdapter);


现在,我正在考虑一种更好的编程方式:在AsyncTask启动之前创建一个新的MyAdapter,将其分配给RecyclerView,对于每个新的MyObject,我调用一个MyAdapter方法,该方法将对象添加到列表中并调用notifyItemInserted:

 myAdapter = new MyAdapter();
 recyclerView.setAdapter(myAdapter);
 myAdapter.addMyObject(new MyObject("aa", "bb", cc"); //for each piece of data by Internet

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
     private List<News> data = new ArrayAdapter<>();

     public void addMyObject(MyObject myObject) {
        data.add(myObject);
        notifyItemInserted(this.data.size() -1);
     }
}


我想了解第二种方法在以下方面是否比第一种更好:


响应式用户界面;
性能;

最佳答案

我不是专家,但是我认为第二种方法迫使您的RecyclerView重绘自身约30次(每个MyObject一次),而第一种方法仅进行一个绘制过程。由于您的要素很少,我认为第一种方法是可以的。但是,等待这个领域比我更熟练的人的答案。

10-06 15:23