Значение столбца Android SQLite не существует - PullRequest
0 голосов
/ 13 марта 2012

нужна помощь в некоторой проводной проблеме.У меня есть элементы таблицы sqlite:

item_id    item_name
1          first
2          second
3          third

и т. Д.

Этот фрагмент кода вставляет item_id и item_name в массивы совершенно нормально.Но когда я назначаю его CustomCursorAdapter через исключение

"колонка 'first' не существует"

, пожалуйста, помогите, я новичок в 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.
        }

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Это потому, что вы устанавливаете from[0] = c.getString(1).

getString() равно на основе нуля , поэтому в вашем случае возвращается "first".Затем вы передаете from как параметр from класса (который, я думаю, расширяет SimpleCursorAdapter), а затем вы получаете эту ошибку, когда адаптер пытается сопоставить имя этого столбца.В этом случае from представляет список имен столбцов, содержащих данные для привязки к пользовательскому интерфейсу, который представлен to.

0 голосов
/ 13 марта 2012

in из параметра в

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

нужны имена столбцов в качестве аргументов, в то время как вы передаете массив значений столбца из массива, в то время как 'to' должен быть идентификатором текстовых представлений макетов, которые эти столбцы должны быть спроецированы., поэтому в этом примере идентификатором является android.R.id.textview1, поэтому сделайте следующее:

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

и затем выполните запрос по этим параметрам.

...