2

これは、実際には特定の 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 をいじったり、リストされているすべてのカテゴリをループしてカテゴリの重複を回避したりせずに、これを達成するための良い方法は何ですか? または、これを行うための適切な/きちんとした/標準化された方法はありませんか?

4

1 に答える 1

2

ここでExpandableListViewを使用することをお勧めします。1つはグループとして、もう1つは子として、2つの別個のゲッターセッタークラスを作成します。グループと子の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;
    }
}

次に、グループと子をArrayListに追加し、グループと子のデータをExpandableListに設定する必要があります。

private ArrayList<ExpandListGroup> groups = new ArrayList<ExpandListGroup>();
private ArrayList<ExpandListChild> childs;

カーソル内のデータを取得し、次のようなsetter-getterクラスに設定します。

while(...){
 Group -> Category1, Category2, Category3,...
 Child -> Item1, Item2,....
}

これで、グループのArrayListにその値と子が入力されました。ExpandableList Adapterに設定するだけで、回避できます。hereさらに明確にするために、ExpandableListをGroupクラスとChildクラスで埋める方法を見つけることができます。

于 2012-10-09T15:12:49.040 に答える