0

例如,我有这张表:

在此处输入图像描述

我正在使用以下方法从该表中查询:

public ArrayList<ArrayList<String>> getAllViandCategory() {
        ArrayList<ArrayList<String>> data2 = new ArrayList<ArrayList<String>>();
        ArrayList<String> data = new ArrayList<String>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + "tbl_viand_category";

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                data.add(cursor.getString(0));
                data.add(cursor.getString(1));
                data2.add(data);
            } while (cursor.moveToNext());

        }
        return data2;
    }

我没有得到想要的输出。我得到这个:[1,Fish,2,Vegetables,3,Meat,4,Rice,5,Etc]而不是[[1,Fish],[2,Vegetables],[3,Meat],[4,Rice],[5,Etc]]

4

1 回答 1

0

你所拥有的是一个列表列表。外部列表具有具有列表的对象。

// Code to add a list object into outer list.
data2.add(data);

您会注意到您只创建了一次数据对象。所以基本上相同的对象一次又一次地插入到data2中。

您需要为每次迭代创建一个新的数据对象。

// New Code
if (cursor.moveToFirst()) {
        do {
            data = new ArrayList<String>();
            data.add(cursor.getString(0));
            data.add(cursor.getString(1));
            data2.add(data);
        } while (cursor.moveToNext());

    }

希望有帮助:D

于 2013-01-08T05:51:53.163 回答