используя SimpleCusorAdapter для заполнения ListView для Android - PullRequest
1 голос
/ 13 июня 2010

Я пытаюсь получить несколько фрагментов данных из базы данных SQLite в ListView, но, похоже, это не работает.

Я использую код из примера Notepad на developer.android.com, и он отлично работает для 1 фрагмента данных, но не для 2.

Я пытаюсь получить заголовок и тело каждой записи базы данных из базы данных, через курсор и в представление, я думаю, что моя проблема с xml:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="28dip" />
    <TextView android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="28dip" />
</LinearLayout>

Вот мой код для попытки связать значения:

mNotesCursor = mDbHelper.fetchAllNotes();
        startManagingCursor(mNotesCursor);
String[] from = new String[]{NotesDbAdapter.KEY_TITLE, NotesDbAdapter.KEY_BODY};
int[] to = new int[]{R.id.text1, R.id.text2};

SimpleCursorAdapter notes = 
        new SimpleCursorAdapter(this, R.layout.notes_row, mNotesCursor, from, to);
    setListAdapter(notes);

Если я получаю только KEY_TITLE в .xml только с одним TextView (как в учебнике Notepad), тогда это нормально, но если я пытаюсь запустить его с определенным выше xml, он принудительно закрывается.

Есть идеи, почему?

Спасибо за ваше время,

InfinitiFizz

1 Ответ

0 голосов
/ 14 июня 2010

Было бы лучше, если бы вы создали собственный адаптер вместо «SimpleCursorAdapter».

По сути, вам нужно создать новый класс, производный от CursorAdapter, а затем реализовать методы newView и bindView. в обоих из этих методов вы указываете курсор на правильную позицию, чтобы вы могли получить прямой доступ к содержимому и отобразить между вашим видом и данными.

...