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