0

rawQuery の結果を収集する配列があります。完全に機能しますが、結果が1つしかない場合、この例外がスローされます。

public String [][] getList() {
        SQLiteDatabase db = this.getWritableDatabase();
        String [][] data;
        Cursor c = db.rawQuery("SELECT nombre FROM productos GROUP BY " +
            "nombre ORDER BY nombre", null);
        if (c.moveToFirst()) {
            data = new String[c.getCount()][1];
            int i = 0; char last = 1;
            do {
                data[i][0]=c.getString(c.getColumnIndex("nombre"));
                if(data[i][0].charAt(0)!=last) {
                            char [] a = {data[i][0].charAt(0)};
                String b = new String(a); 
                            data[i][1]=b; 
                            last = a[0];} else {
                    data[i][1]=null;
                }
                i++;
            } while ( c.moveToNext());
            db.close();
            return data;
        }
        data=new String[1][1]; data[0][0]="-1";
        db.close();
        return data;
    } 

このメソッドは、区切り記号付きの listView を作成するために必要な情報を Custom List Adapter に提供します (そのため、2 列目に文字を使用しています)。手伝って頂けますか?

4

1 に答える 1

2

data配列に初期化していnew String[c.getCount()][1]ます。つまり、有効な 2 番目の添字の最大値は 1 ではなく 0 です。2 要素の配列が必要です。new String[c.getCount()][2]

于 2013-01-13T10:55:03.307 に答える