Android: просмотр списка не отображается должным образом с помощью simpleCursorAdapter

Я некоторое время боролся с моим довольно простым приложением. Это мой onCreate в моем классе активности списка:

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    DB db = new DB(this);
    db.open();
    cur = db.getData(); //cursor with all data from an SQLite db

    String[] from = new String[] { DB.KEY_FIRSTNAME,
            DB.KEY_LASTNAME, DB.KEY_BDATE};
    int[] to = new int[] { NOT SURE WHAT TO PUT HERE };
    startManagingCursor(cur);
    setListAdapter(new SimpleCursorAdapter(this, 
    android.R.layout.simple_list_item_1, cur, from, to));

    db.close();

    }

Метод getData() возвращает курсор из базы данных sqlite. int[], используемый адаптером, определенным над, я думаю, что проблема заключается в том, но я понятия не имею, как ее решить. Список, который я получаю, либо пуст. Только строки, напоминающие количество записей в базе данных или только 1 из столбцов. Я пробовал int[] {android.R.id.text1, android.R.id.text1, android.R.id.text1, android.R.id.text1} и меньше записей, и text2, и теперь я пытался просто сделайте текстовое представление и вызовите его, но затем он снова станет полностью пустым.

Надеюсь, вы поможете мне разобраться в этом. Спасибо!


person betweenChairandMonitor    schedule 16.02.2012    source источник


Ответы (1)


Ваша переменная to хранит R.id того места, куда вы хотите сопоставить свои данные. Например, если в макете (android.R.layout.simple_list_item_1) есть три TextView с именами fName, lName и bDate, вы должны поместить их в int array, и он сопоставит данные в полях from с компонентами макета на экране. в полях.

int[] to = new int[] {R.id.fName, R.id.lName, R.id.bDate};
person Tyler Ferraro    schedule 16.02.2012
comment
Итак, мне нужно сделать 3 TextView и поместить их в список? Или мне следует изменить свой макет и создать макет ListView с тремя полями TextView? Я думал, что смогу поместить их прямо в список, сделав это таким образом. Видимо я что-то не так понял. Спасибо пока - person betweenChairandMonitor; 16.02.2012
comment
Ознакомьтесь с этим кратким примером использования простого адаптера. Это действительно ломает его. eureka.ykyuen.info/2010/01/03 / - person Tyler Ferraro; 16.02.2012
comment
Почему-то я все еще не могу заставить его работать. Я изменил int[] на = new int[] {R.id.c1, R.id.c2, R.id.c3}; И создал файл xml, содержащий горизонтальный linearlayout с 3 текстовыми представлениями. c1, c2 и c3 являются идентификаторами TextViews. Я также создал еще один XML-файл только с ListView: ‹?xml version=1.0 encoding=utf-8?› ‹ListView xmlns:android=schemas.android.com/apk/res/android android:id=@+id/layout android:layout_width=fill_parent android:layout_height=fill_parent › ‹/ListView› Это все еще только показывает строки без текста :S - person betweenChairandMonitor; 16.02.2012
comment
Вы обязательно загрузили эти новые файлы макета в свой код? - person Tyler Ferraro; 17.02.2012
comment
Ссылки c в моем int[] загружают их как «пункт назначения» в адаптере, не так ли? И я поместил новый макет в simpleCursorAdapter, где раньше у меня был simple_list_item1. - person betweenChairandMonitor; 17.02.2012
comment
Наконец-то мне удалось это сделать! Мне нужно было ссылаться на текстовые представления в макете, тогда как я ссылался на текстовые представления в отдельном xml. - person betweenChairandMonitor; 17.02.2012