我想生成一个ListView
,在某些条目之间有一些分隔符,就像在某些属性部分中可以看到的那样。请参阅下面的示例。我尝试生成一个List
,其中包含一些 textviews ,后面是一个花式分隔符,用于解释列表的下一部分,然后是一些文本视图。如何才能做到这一点?我想创建不同的视图来添加到列表中?这是要走的路吗?
答案 0 :(得分:10)
我有一个解决方案。我不知道它是不是最好的一个。
我使用从ArrayAdapter派生的自定义适配器作为此tutorial中所述的列表。在适配器类中,我检查getView方法中的位置是否是正常行,然后我膨胀行布局。如果它是来自新组的第一行,我会扩展标题布局,即正常行加上其上方的组标题。
如果您不想将标题混合到其中一行中。请考虑以下解决方案:
您可以覆盖两种方法getItemViewType和getViewTypeCount。 您现在有一个可以显示不同行的列表。您需要在getView方法中检查项目的预期视图类型,并根据它来扩展不同的布局。
该列表将以一种方式处理回收,它只返回正确的回收视图到getView方法,这意味着如果recycleView不为null,它可以用于显示当前单元格。
答案 1 :(得分:3)
如果GPLv3可以接受(由于某些上游代码以这种方式获得许可),您可以使用我的SectionedAdapter
。如果您需要更灵活且使用限制较少的许可证(Apache 2),您可以使用我的MergeAdapter
。
答案 2 :(得分:1)
我想你可能正在寻找android.widget.ExpandableListView
http://developer.android.com/reference/android/widget/ExpandableListView.html
答案 3 :(得分:0)
我也对这个答案感兴趣。必须有一种更直接的方法来做到这一点。
在查看Adapter时,有一个方法,Adapter.getItemViewType(int position)。
ListView定义了一个返回值ITEM_VIEW_TYPE_HEADER_OR_FOOTER,它指示返回的项目是页眉还是页脚。
我还没有尝试过,但我假设如果您创建自己的适配器并返回一个类型指示它是页眉或页脚的项目,ListView将正确显示它。