У меня есть класс BaseAdapter
, в котором я реализую «переподготовку» для данных списка во всех классах адаптера, расширяющих BaseAdapter, следующим образом:
RecyclerView.Adapter adapter = mRecyclerView.getAdapter();
if (adapter instanceof "Adapter Class that extends BaseAdapter") {
((Adapter Class that extends BaseAdapter") adapter).refreshData(data);
} else {
adapter = new Adapter Class that extends BaseAdapter"();
(("Adapter Class that extends BaseAdapter") adapter).refreshData(topicDetails);
mRecyclerView.setAdapter(adapter);
}
где refreshData(T data)
- это общий, абстрактный метод также в BaseAdapter
, который реализует notifyDataChanged
и т. Д.
Так что в clss, который простирается BaseAdapter
, я могу просто позвонить:
public class MyAdapter extends BaseAdapter<Data> {
@Override
public void refreshData(Data data) {
insertItems(data);
notifyDataSetChanged();
}
}
А в Деятельности / Фрагменте или там, где RecyclerView:
mRecyclerView.refreshData(mAdapter)
или что-то. Я не уверен, как получить «Класс адаптера, который расширяет BaseAdapter» из BaseAdapter
tldr
В основном я хочу написать общий метод для выполнения:
RecyclerView.Adapter adapter = mRecyclerView.getAdapter();
if (adapter instanceof "Adapter Class that extends BaseAdapter") {
((Adapter Class that extends BaseAdapter") adapter).refreshData(data);
} else {
adapter = new Adapter Class that extends BaseAdapter"();
(("Adapter Class that extends BaseAdapter") adapter).refreshData(topicDetails);
mRecyclerView.setAdapter(adapter);
}
чтобы мне не приходилось делать это для каждого списка