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