专家,
下面的代码是获取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);
}
}
答案 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);
}
}