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

时间:2017-01-08 17:18:42

标签: java android generics

我有一个ViewPager,其中四个Fragment中的三个几乎相同。它们在每个图像下方显示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 个答案:

答案 0 :(得分:1)

最直接的方法是为所有不同的对象创建一个通用接口。既然你说所有你需要的是“图像”和“名称”属性,它可能是这样的:

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

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

然后,您只需将您的适配器更改为使用NamedImage而不是TagsItem