如何为两种不同类型的对象使用相同的适配器?

时间:2016-01-11 09:07:57

标签: android object custom-adapter

我有两个具有相同布局的适配器,除了在constructer中传递的参数之外的所有内容都是不同的,所以为此我必须使两个不同的适配器相同,但只是构造不同。

public MoviePackageGridAdapter(Context context, int resourceId,
                               ArrayList<MoviePackage> packageList) {
    super();
    this.context = context;
    this.resourceId = resourceId;
    this.packageList = packageList;
}

另一个是:

public PackageGridAdapter(Context context, int resourceId,
                          ArrayList<ChannelPackage> packageList) {
    super();
    this.context = context;
    this.resourceId = resourceId;
    this.packageList = packageList;
}

适配器里面的所有内容都是相同的。我想为两种不同类型的对象使用相同的适配器。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

不可能让两个constructors采用相同的参数。但是你可以在第二个标志上添加一个标志,指出你传递的对象,如:

boolean isChannelPackage;

public MoviePackageGridAdapter(Context context, int resourceId,
                           ArrayList<MoviePackage> packageList) {
    super();
    this.context = context;
    this.resourceId = resourceId;
    this.packageList = packageList;
    this.isChannelPackage = false;
}


public PackageGridAdapter(Context context, int resourceId,
                      ArrayList<ChannelPackage> packageList, boolean isChannelPackage) {
    super();
    this.context = context;
    this.resourceId = resourceId;
    this.packageList = packageList;
    this.isChannelPackage = isChannelPackage;
}

您可以使用标记isChannelPackage来指示您收到的数据类型。