java - 不同类型的列表作为参数

标签 java android android-recyclerview

我需要在我的一个回收器 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/

相关文章:

android - Android 4.4 中的自定义 View 构造函数在 Kotlin 上崩溃,如何修复?

android - 不推荐使用 getAdapterPosition()

java - 在搜索过程中过滤列表会修改原始数据源

Java/ eclipse : "Lambda expressions cannot be used in an evaluation expression"

java - 为什么无论我为什么删除我的文件都不会删除?

java 正则表达式 : extract text after delimeter?

java - 如何在baseadapter android中处理ArrayList中的空值

java - 在 Android 中以度为单位绘制三角函数

android - 如何在 Android 上将多个计时器用于 recyclerView

java - 如何序列化一个包含 ObservableList 的对象?