需要一些想法来解决listview的问题。
Person 1 ----> Pet 1
----> Pet 2
----> Pet 3
Person 2 ----> Pet 1
Person 3 ----> Pet 1
----> Pet 2
----> Pet 3
----> Pet 4
如何才能在列表视图中显示上述层次结构:
Person 1 row
Pet 1 row
Pet 2 row
Pet 3 row
等等。
我考虑过可扩展的listview,但这并不适合我的需求。有没有办法实现我需要的布局?
由于
答案 0 :(得分:0)
为什么可扩展列表不适合您?你不想要"扩展" ExpandableListView
的功能?
您只想简单ListView
有两种ListView
项?
如果是这样,我认为最好的方法是以这种方式使用ListView
。
定义例如enum
:
enum ListViewItemType {
PERSON, PET
}
和方法:
private ListViewItemType getTypeByPosition(int position);
例如,如果你有这样的结构:
Person 1 row
Pet 1 row
Pet 2 row
Pet 3 row
Person 2 row
Pet 1 row
etc.
此方法将返回:
0: PERSON
1: PET
2: PET
3: PET
4: PERSON
5: PET
etc.
考虑如何实现此方法:)
然后为Adapter
创建ListView
并覆盖其getView(...)
方法
.. getView(int, View, ViewGroup) {
switch(getTypeByPosition(position)) {
PERSON: // return view for person listview item
PET: // return view for pet listview item
}
那是。 如果您需要更详细的解释,请询问)
答案 1 :(得分:0)
我不是肯定的我完全理解你想要达到的目标,但根据你的例子,为每个人使用一个标题可能最有意义,并在下面列出他们各自的宠物。要做到这一点,您需要构建一个数据结构(在您的情况下可能是一个ArrayList),所有宠物都由其所有者列出并订购。
您可以通过视觉实现这一目标的一个好方法是使用像https://github.com/emilsjolander/StickyListHeaders这样的库,其中每个所有者的标题视图将“粘住”在他们的宠物群上方。