【问题标题】:Sorting a list of items based on categories (Android)根据类别对项目列表进行排序 (Android)
【发布时间】:2012-09-29 21:30:46
【问题描述】:

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

【问题讨论】:

  • 所以你有问题只列出这些项目或从数据库中查询也是一个问题?
  • 查询没问题。这就是我要在我想知道的 Android 视图中列出/排序它们的方式。

标签: android list sorting


【解决方案1】:

我建议你在这里使用 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2018-10-22
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多