繁体   English   中英

重复使用同一适配器处理多个几乎相似的片段

[英]Re-use same adapter for multiple almost similar fragments

我有一个ViewPager ,其中四个Fragment有3个几乎相同。 它们显示一个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

} 

我只需要每个班级的图像和名称。

我想对每个适配器使用相同的适配器,因为它们不需要为每个组件单独布置。 这只是图像和名称。

我应该如何以更通用的形式声明Adapter,以便可以全部使用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

最简单的方法是为所有不同的对象创建一个公共接口。 由于您说的是您需要的只是“图像”和“名称”属性,因此可能是这样的:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM