使用SQlite填充可扩展列表,将数据复制到标题中

时间:2014-06-16 09:20:07

标签: java android sqlite expandablelistview

我正在尝试从SQLite DB填充我的可扩展列表,我从androidhive获得了可扩展列表教程,但它是针对静态数据的。

我让它工作了大约80%,但现在我的问题是数据在所有标题下填充,而不是它们唯一的标题。我认为我的问题是因为所有标头和子数据都使用相同的数组,并且标题需要是唯一的吗?

我在想的是使用变量名称动态创建数组,但我不知道如何做到这一点,并且无法想到另一种方法,因为这是我第一次使用可扩展列表。

这是我的代码。我也有一种感觉,我在做嵌套游标的方式并不正确

String sqlQ = "SELECT Distinct "
            + "strftime('%d-%m-%Y', "+ SQLdb.DB_TIMEOPEN +") header " +
            " FROM " + SQLdb.DICTIONARY_TABLE_NAME
            + " WHERE " + SQLdb.DB_PACKAGE + " = '"+ appPackage +"'"
            + " ORDER BY " + SQLdb.DB_TIMEOPEN + " ASC";
    Cursor mCursor = dataBase.rawQuery(sqlQ, null);
    Log.i("SQL",sqlQ);

    if (mCursor.moveToFirst()) {
        do {

            listDataHeader.add(mCursor.getString(mCursor
                    .getColumnIndex("header")));



            String sqlQ2 = "SELECT " + SQLdb.DB_NAME + ", "
                    + SQLdb.DB_PACKAGE + ", " 
                    + SQLdb.DB_TIMEOPEN + ", " 
                    + SQLdb.DB_TIMECLOSED + ", " 
                    + SQLdb.DB_DURATION + ", "
                    + "strftime('%d-%m-%Y', "+ SQLdb.DB_TIMEOPEN +") header " +
                    " FROM " + SQLdb.DICTIONARY_TABLE_NAME
                    + " WHERE " + SQLdb.DB_PACKAGE + " = '"+ appPackage +"'"
                    + " AND strftime('%d-%m-%Y', "+ SQLdb.DB_TIMEOPEN +") = '"+ mCursor.getString(mCursor
                            .getColumnIndex("header")) +"'"
                    + " ORDER BY " + SQLdb.DB_TIMEOPEN + " ASC";
            Cursor mCursor2 = dataBase.rawQuery(sqlQ2, null);
            if (mCursor2.moveToFirst()) {
                do {


                    listDataChildInner.add(mCursor2.getString(mCursor2
                                    .getColumnIndex(SQLdb.DB_DURATION)));
                    listDataChildInnerO.add(mCursor2.getString(mCursor2
                                    .getColumnIndex(SQLdb.DB_TIMEOPEN)));
                    listDataChildInnerC.add(mCursor2.getString(mCursor2
                                    .getColumnIndex(SQLdb.DB_TIMECLOSED)));
                    Log.i("ACT CHILDT",mCursor.getString(mCursor
                            .getColumnIndex("header")) + " -> " + mCursor2.getString(mCursor2
                                    .getColumnIndex(SQLdb.DB_TIMEOPEN)));
                } while (mCursor2.moveToNext());
            }


            listDataChild.put(mCursor.getString(mCursor
                    .getColumnIndex("header")).toString(), listDataChildInner);

            listDataChildO.put(mCursor.getString(mCursor
                    .getColumnIndex("header")).toString(), listDataChildInnerO);

            listDataChildC.put(mCursor.getString(mCursor
                    .getColumnIndex("header")).toString(), listDataChildInnerC);


        } while (mCursor.moveToNext());
    }

0 个答案:

没有答案