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);

データ オブジェクトを 1 回だけ作成したことがわかります。したがって、基本的に同じオブジェクトが 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 に答える