实际上,这不是一个特定的 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/