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 楼答案
最简单的方法是为所有不同的对象创建一个公共接口。既然您说您只需要“image”和“name”属性,那么很可能是这样的:
然后,适配器显示的每个类都将实现该接口
然后,您只需将adapater更改为使用NamedImage而不是TagsItem