有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为多个几乎相似的片段重用同一适配器

我有一个{},四个{}中有三个几乎相同。它们显示一个GridLayout,每个图像下面都有图像和文本。我已经完成了其中一个的代码。 我使用Retrofit服务从服务器获取数据。对象是相同的,除了1-2个字段,我只需要它们来反序列化

其中一个对象的示例:

public class TagsItem implements Serializable{

@SerializedName("post_id")
private String postId;

@SerializedName("account_id")
private int accountId;

private String tags;
private String description;
private String image;
private String name;

// removed getters/setters for brevity

} 

我只需要每个类的图像和名称

如果可能的话,我想为它们中的每一个使用相同的适配器,因为它们不需要为每一个项目使用单独的布局。这只是图像和名称

我应该如何以更通用的形式声明适配器,使其在所有3种情况下都可用

现在,适配器的代码是:

public class TagsAdapter extends RecyclerView.Adapter<TagsAdapter.ViewHolder> {

private Context context;
private List<TagsItem> dataset;

public TagsAdapter(Context context) {
    this.context = context;
    dataset = new ArrayList<>();
}

// more adapter code

}

如您所见,名称为TagsAdapter,数据集类型为TagsItem


共 (1) 个答案

  1. # 1 楼答案

    最简单的方法是为所有不同的对象创建一个公共接口。既然您说您只需要“image”和“name”属性,那么很可能是这样的:

    interface NamedImage {
     public String getImage();
     public String getName();
    }
    

    然后,适配器显示的每个类都将实现该接口

    然后,您只需将adapater更改为使用NamedImage而不是TagsItem