我需要在我的一个回收器 View 中将 2 个不同类型的列表(取决于用例)从 fragment 传递到适配器构造函数。
因此,在 BindViewHolder 中,我应该获取必要类型的列表,获取 1 项并将其设置为 viewholder。
插入“抽象”列表类型的最佳方法是什么?我尝试用 Object 来做到这一点,但这似乎是错误的方式。
适配器:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Object> articles;
public MyAdapter(List<Object> articles, Context context) {
this.articles = articles;
this.context = context;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// ???
Object article = getOneArticleFromArticles(articles, position);
// here in in setText I only can get title from my concrete entity type
holder.title.setText(article.getTitle());
...
第一个实体:
public class Foo {
private String title;
public String getTitle() {
return title;
}
}
第二个实体:
public class Bar {
private String title;
public String getTitle() {
return title;
}
}
使用
adapter = new MyAdapter(#response items from Foo#, getActivity());
adapter = new MyAdapter(#response items from Bar#, getActivity());
最佳答案
查看问题和评论,您希望能够提供一种通过 getTitle()
获取标题的通用方法,但也允许您为每个“实现”类提供其他方法。
接口(interface)是一种简单的方法。您可以在接口(interface)中定义getTitle()
并让每个类实现它。
然后您可以使用此接口(interface)作为传递给适配器的参数类型。
关于java - 不同类型的列表作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34112428/