根据类别对项目列表进行排序(Android)

时间:2012-10-09 14:07:51

标签: android list sorting

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

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

以下是数据库表的说明:

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来检查一个项目是属于这个还是那个类别,循环遍历所有 列出的类别,以避免重复类别等?或者这样做没有良好/整洁/标准化的方式吗?

1 个答案:

答案 0 :(得分:2)

我建议你在这里使用ExpandableListView。创建两个seprate 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,....
}

现在,您的GroupList of Group已填充其值和子项。只需将其设置为ExpandableList Adapter即可解决。有关进一步说明,您可以找到here是如何使用Group和Child类填充ExpandableList的。