2

实际上,这不是一个特定的 Android 问题/问题,只是我想要一个 Activity 中的嵌套/可扩展列表。

我正在为如何解决这个特定问题而苦苦挣扎:我想在列表(可能是嵌套/扩展列表)中显示基于类别的项目列表。这些项目按类别分组,并从数据库查询中接收。

下面是对数据库表的描述:

Table Categories
-----------------
CatID   CatName
01      Category1
02      Category2
03     Category3

Table Items
---------------------------------
ItemID  ItemName  Category
01      Item1     01
02      Item2     01
03      Item3     02
04      Item4     02
05      Item5     03
06      Item6     03

查询结果示例:

Category1   Item1
Category1   Item2
Category2   Item3
Category2   Item4
Category3   Item5
Category3   Item6

现在,我想知道的是如何按类别对项目进行排序,并列出它们。在 Android GUI 中,我希望它看起来像这样:

Category1
- Item1
- Item2
Category2
- Item3
- Item4
Category3
- Item5
- Item6

有什么好方法可以实现这一点,而不是用一堆 if 来检查一个项目是否属于这个或那个类别,遍历所有列出的类别以避免重复的类别等?还是没有好的/整洁/标准化的方式来做到这一点?

4

1 回答 1

2

我建议你在这里使用 ExpandableListView。创建两个单独的 getter-setter 类,一个作为 Group,另一个作为 Child。创建 Group 和 Child 的 ArrayList 来设置数据。

public class ExpandListGroup {

    private String Name;
    private ArrayList<ExpandListChild> childItems;

    public ArrayList<ExpandListChild> getChildItems() {
        return childItems;
    }
    public void setChildItems(ArrayList<ExpandListChild> childItems) {
        this.childItems = childItems;
    }
    public String getName() {
        return Name;
    }
    public void setName(String name) {
        this.Name = name;
    }
}


public class ExpandListChild {

    private String Name;

    public String getName() {
        return Name;
    }
    public void setName(String Name) {
        this.Name = Name;
    }
}

现在您必须将 Group 和 Child 添加到 ArrayList 并将 Group 和 Child 的数据设置为 ExpandableList。

private ArrayList<ExpandListGroup> groups = new ArrayList<ExpandListGroup>();
private ArrayList<ExpandListChild> childs;

获取游标中的数据并将其设置为 setter-getter 类,例如,

while(...){
 Group -> Category1, Category2, Category3,...
 Child -> Item1, Item2,....
}

现在,您的 Group 的 ArrayList 充满了它的值和子项。只需将其设置为 ExpandableList Adapter,您就可以解决它。为了进一步说明,您可以找到here如何使用 Group 和 Child 类填充 ExpandableList。

于 2012-10-09T15:12:49.040 回答