我有一个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一次),而第一种方法仅进行一个绘制过程。由于您的要素很少,我认为第一种方法是可以的。但是,等待这个领域比我更熟练的人的答案。