У меня есть AsyncTask, загружающий данные из Интернета, создайте менее 30 объект MyObject и добавьте его в список. В конце концов, я буду создавать MyAdapter проходящий список в качестве параметра и установите MyAdapter как адаптер вида утилизатора:Подход производительности адаптера RecyclerView
myList.add(new MyObject("aa", "bb", cc"); //for each piece of data by Internet
MyAdapter myAdapter = new MyAdapter(myList);
recyclerView.setAdapter(myAdapter);
Сейчас я думаю о лучшем способе программирования: создать новый MyAdapter перед тем из AsyncTask начинает назначьте, что в 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);
}
}
Я хотел бы понять, если второй подход лучше, чем первый с точки зрения:
- Отзывчивый UI;
- Производительность;
Возможно, RecyclerView не будет полностью перерисовываться. С notifyItemInserted будет только нарисовать новый элемент, не так ли? – helloimyourmind
Я думаю, что даже с notifyItemInserted recycler, по крайней мере, должен выполнить некоторые измерения самого себя и ранее вставленных элементов, но, как я уже сказал, я не являюсь экспертом в области пользовательского интерфейса. – MatteoBelfiori