使用单个适配器显示来自两个单独类的项目

时间:2018-01-10 13:49:24

标签: java android

我扩展了一个ArrayAdapter,它在一个ListView中一起显示来自两个独立类的项目。我将ArrayList<ClassA> classAListArrayList<ClassB> classBList传递给构造函数和更新方法,并重写了支持函数以不同方式显示这两个类。这样做,似乎有些不雅。

是否有更原生的方法将多个类组合成一个ListView?

2 个答案:

答案 0 :(得分:2)

它不优雅,因为ListView并非旨在显示复杂的数据和布局,您的方法几乎可以做到。

如果要以优雅的方式显示多个单元格模板,则应使用RecyclerView

它与ListView非常相似,您需要实现一个适配器作为数据源和单元的View工厂。具体来说,请查看getItemViewTypecreateViewHolderbindViewHolder

Or just search for an solution

答案 1 :(得分:0)

是的,你可以用很少的方式来做。

第一个选项是将这些类包装到一个类中,该类将保存对 ClassA ClassB 的引用。之后,您可以像使用普通对象一样使用它。

第二个选项是同时使用两个列表,但您需要以不同的方式使用适配器。

首先:

@Override
public int getCount() {
    return classAList.size() + classBList.size();
}

第二

@Override
public Object getItem(int position) {
    if(position >= classAList.size()){
         return classBList.get(position  -  classAList.size());
    }
    return classAList.get(position);
}

如果您对两个列表使用相同的视图,则所有其他视图都相同,否则您应该覆盖更多内容:
至少为 getViewTypeCount() getItemViewType()