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

标签 android list sorting

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

最佳答案

我建议您在这里使用 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 的方法。

关于android - 根据类别对项目列表进行排序 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801929/

相关文章:

python - Python 中反转字符串和回文时间复杂度

java - 如何计算比较器/比较器中的比较次数?

Android 异步 FTP

Python:如何查找字符串中每个列表项的存在

Python - 连接多个子文件夹中的文本文件

c - 错误 sliceShiftLeft() 函数

java - 如何将 int 排序转换为 String 排序?

android - 使用 NavController 时如何返回到上一个 fragment ?

java - 解析jsoup中元素内的元素?

android - fragment 中的进度条