如何以智能方式为可扩展列表适配器创建数据

时间:2016-07-20 14:42:36

标签: android arraylist

专家,

下面的代码是获取ExpandableListAdapter的数据。我对列表温度有疑问。

假设我在db中有以下数据:

标题A,儿童123,111

标题B,儿童456,444

标题C,儿童789,777

我期望的结果是:

expListChild.put(A,123,111); //(实际结果:expListChild.put(A,123,111,456,444,789,777)

expListChild.put(B,456,444); //(实际结果:expListChild.put(B,123,111,456,444,789,777)

expListChild.put(C,789,777); //(实际结果:expListChild.put(C,123,111,456,444,789,777)

我不知道该怎么做,我一直想到使用temp1,temp2,但我不知道Cursor cHeader中有多少行。

你能帮帮我吗?谢谢。 我想问题是我不知道如何创建一系列变量。

List<String> expListHeader = new ArrayList<>();
HashMap<String, List<String>> expListChild = new HashMap<>();
List<String> temp = new ArrayList<>();

void xxx() {
    Cursor cHeader = db.rawQuery("XXX", null);
    cHeader.moveToFirst();
    while (cHeader.moveToNext())
    {
        String headerStr = cHeader.getString(0);
        expListHeader.add(headerStr);

        Cursor cChild = db.rawQuery("XXX", null);
        cChild.moveToFirst();
        while (cChild.moveToNext()) {
            String childStr = cChild.getString(0);
            temp.add(childStr);
        }
        cChild.close();

        expListChild.put(headerStr, temp);
    }
}

1 个答案:

答案 0 :(得分:1)

temp.clear()放在Cursor cChild = db.rawQuery("XXX", null);之前,以释放临时列表中的所有对象。

更新(因为我是愚蠢的)

列出expListHeader = new ArrayList&lt;&gt;(); 的HashMap&GT; expListChild = new HashMap&lt;&gt;();

void xxx() {
    Cursor cHeader = db.rawQuery("XXX", null);
    cHeader.moveToFirst();
    while (cHeader.moveToNext()) {
        String headerStr = cHeader.getString(0);
        expListHeader.add(headerStr);

        List<String> temp = new ArrayList<>();
        Cursor cChild = db.rawQuery("XXX", null);
        cChild.moveToFirst();
        while (cChild.moveToNext()) {
            String childStr = cChild.getString(0);
            temp.add(childStr);
        }
        cChild.close();

        expListChild.put(headerStr, temp);
    }
}