0

我正在 android 中创建一个可扩展列表视图。我有一个 sql 数据库,每个项目都有一个“组名”(其中有许多项目具有相同的组名),然后是一个唯一的“文件名”,它分别成为我的可扩展列表视图和我的孩子中的组。

我想尝试创建一个可扩展的列表视图,该视图贯穿并基于代码添加所需的组和子项,以便我可以向现有组添加新组和新文件,并且不需要重新编码。

这是我到目前为止所拥有的:

String[] groups;
arraylist = new ArrayList<String>();

Cursor listCursor = database.query(true, TABLE_NAME, new String[]{"groupname"}, null, null, "groupname", null, null, null);
listCursor.moveToFirst();
if (!listCursor.isAfterLast()) {
do {
    nametoadd = listCursor.getString(0);
    arraylist.add(nametoadd);
    } while (listCursor.moveToNext());
}
listCursor.close();
groups = arraylist.toArray(new String[arraylist.size()]);

如您所见,它创建了一个 Cursor 查询,该查询在 groupname 列中查找不同的值,然后将每个值添加到 arraylist。然后这些组添加了该数组列表并且可以正常工作,我可以获得可变数量的组。我无法添加孩子。

我现有的代码通过以下方式添加孩子:

private String[][] children = {
            { "child item1", "child item2", "child item3" },
            { "child item1", "child item2", "child item3" } 
};   

这里的问题是,首先,我将在每个数组中拥有可变数量的项目,其次我将在 children 数组中拥有可变数量的数组。

我有第一部分的解决方案:

for (int i = 0; i < arraylist.size(); i++) {
        listCursor = database.query(TABLE_NAME, new String[]{"groupname", "description"}, "groupname='"+arraylist.get(i)+"'", null, null, null, null);
        listCursor.moveToFirst();
        if (!listCursor.isAfterLast()) {
            do {
                nametoadd = listCursor.getString(1);
                arraylist.add(nametoadd);
            } while (listCursor.moveToNext());
        }
        listCursor.close();
        childrenlist = arraylist.toArray(new String[arraylist.size()]);

    }

这将添加每个组名中的任何子项。但是,我怎样才能将每个数组添加到子数组中呢?

4

2 回答 2

0

为孩子们创建一个班级。说

 Class Children{
     public ArrayList<String> content;
  }
于 2013-08-02T02:04:10.327 回答
0

好的,找到了一个可行的解决方案:

我建立:

private List<String[]> childList;

然后添加:

childList.add(childrenlist);

在第二个循环中。

最终代码是:

arraylist = new ArrayList<String>();

Cursor listCursor = database.query(true, TABLE_NAME, new String[]{"groupname"}, null, null, "groupname", null, null, null);
listCursor.moveToFirst();
if (!listCursor.isAfterLast()) {
    do {
    nametoadd = listCursor.getString(0);
    arraylist.add(nametoadd);
} while (listCursor.moveToNext());
}
listCursor.close();
groups = arraylist.toArray(new String[arraylist.size()]);

arraylist1 = new ArrayList<String>();
childList = new ArrayList<String[]>();
for (int i = 0; i < arraylist.size(); i++) {
listCursor = database.query(TABLE_NAME, new String[]{"groupname", "description"}, "groupname='"+arraylist.get(i)+"'", null, null, null, null);
listCursor.moveToFirst();
if (!listCursor.isAfterLast()) {
    do {
    nametoadd = listCursor.getString(1);
    arraylist1.add(nametoadd);
    } while (listCursor.moveToNext());
}
listCursor.close();
childrenlist = arraylist1.toArray(new String[arraylist1.size()]);       
childList.add(childrenlist);
arraylist1.clear();
}

然后我可以通过以下方式引用子列表中的项目:

childList.get(groupPosition)[childPosition]
于 2013-08-02T02:22:57.180 回答