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 回答