【问题标题】:Populating list view using adapter with given one or two ArrayLists使用具有给定一或两个 ArrayLists 的适配器填充列表视图
【发布时间】:2013-12-18 14:24:40
【问题描述】:

我在一个 Activity 中有一个列表视图,我用给定 ArrayList 的适配器填充它。在此类 Elements 中,变量被保留。 所以在这个 ListView 中,我有类别、子类别和元素。在某些情况下只有元素,在其他情况下只有类别,在其他情况下同时存在类别和元素。类别必须是一个元素,当点击该元素时可以转到另一个活动,并且该元素是显示信息的简单元素。

在有子类别和元素的情况下,我正在创建一个全新的 ArrayList,将 ArrayList 和 ArrayList 放入其中,然后有 2 个子数组。目前我的适配器的构造函数是这样的

public class AchivsListAdapter extends ArrayAdapter<Elements> {

ArrayList<Elements> eItems;
ArrayList<Categories> cItems;
LayoutInflater inflater;

public AchivsListAdapter(Context context, int resource, ArrayList<Elements> ee) {
    super(context, resource, ee);
    this.eItems = ee;
    this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

如何使适配器适用于所有给定的情况?

【问题讨论】:

  • 有什么方法可以从 Elements 和 Categories 类中抽象出一些常见的东西?为简单起见,我们可以将这个新的基类称为 Thing。然后你可以让你的 ArchivsListAdapter 扩展 ArrayAdapter。创建一个名为adapterArray 的新实例变量,类型为ArrayList。这将是您将适配器绑定到的数组。然后,在构造函数中,执行所需的逻辑来确定要使用哪个集合并将其放入 adapterArray。如果您需要这两个集合,请在将其设置为源之前迭代并按照您想要的方式制作adapterArray。

标签: android arraylist android-arrayadapter


【解决方案1】:

如果类别和元素是相似的对象,我将编辑 Element 类并给它一个布尔属性 isCategory,这样您就可以拥有一个元素的 ArrayList,并在适配器中检查当前位置是否包含类别或元素并将 onClickListener 设置为第二个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多