0

有線の問題で助けが必要です。次のようなsqliteテーブルアイテムがあります

item_id    item_name
1          first
2          second
3          third

等々

このコードは item_id と item_name を配列に完全に挿入しています。しかし、それを CustomCursorAdapter に割り当てると、例外が発生します

「列「最初」は存在しません」

私はAndroidの初心者です。

        c = db.rawQuery("select item_id as _id, item_name from items", null);
        int i = 0;
        c.moveToFirst();
        do {
            from[i] = c.getString(1);
            to[i] = c.getInt(0);
            Log.i("item ", to[i] + " " + from[i]);
            i++;
        } while (c.moveToNext());
        try {
            CustomCursorAdapter ca = new CustomCursorAdapter(this,
                    android.R.layout.simple_list_item_1, c, from, to);

            getListView().setAdapter(ca);
        } catch (Exception e) {
            Log.e("Ex ", e.getMessage()); // exception : column 'first' does not exists.
        }
4

2 に答える 2

2

これは、設定しているためですfrom[0] = c.getString(1)

getString()ゼロベースなので、あなたの場合は返されます"first"。次に、クラスfromのパラメーターとして渡していfromます(SimpleCursorAdapterを拡張していると思います)。アダプターがこの列名をマップしようとすると、このエラーが発生します。この場合from、 は UI にバインドするデータを保持する列名のリストを表し、 で表されtoます。

于 2012-03-13T04:28:16.200 に答える
0

パラメータから

CustomCursorAdapter ca = new CustomCursorAdapter(this,
                    android.R.layout.simple_list_item_1, c, from, to);

引数として列名が必要でしたが、列値の配列を配列から渡しているのに対し、「to」はこれらの列を投影するレイアウトのテキストビューの ID である必要があったため、この例では ID は android.R.id.textview1 です。以下を実行します。

String[] from= new String[]{"item_name"};
int[] to= new int[]{android.R.id.textView1};

次に、これらのパラメーターに対してクエリを実行します。

于 2012-03-13T04:26:46.507 に答える