【发布时间】:2018-10-10 08:31:31
【问题描述】:
我有一个 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 等。
所以在扩展 BaseAdapter 的 clss 中,我可以调用:
public class MyAdapter extends BaseAdapter<Data> {
@Override
public void refreshData(Data data) {
insertItems(data);
notifyDataSetChanged();
}
}
在 Activity/Fragment 或 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);
}
这样我就不必为每个列表都这样做
【问题讨论】:
-
你找到解决办法了吗?
标签: android generics inheritance