Android:动态listview howto?

时间:2014-03-21 14:10:05

标签: android listview android-listview

需要一些想法来解决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,但这并不适合我的需求。有没有办法实现我需要的布局?

由于

2 个答案:

答案 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这样的库,其中每个所有者的标题视图将“粘住”在他们的宠物群上方。