Отображение базы данных в ListView - PullRequest
1 голос
/ 25 января 2012

Я новичок в Android, и, пройдя через множество уроков, я все еще не могу ничего понять.

Я создал базу данных и сейчас читаю эту базу данных. Это база данных и 3 столбца Все три строковых типа.

Теперь я хочу показать эту базу данных, используя ListView. У меня есть ListView создан с идентификатором "listDatabaseItems" в R.layout.viewDatabase

В настоящее время мой код:

Cursor c = sqliteDatabase.query(MY_DATABASE_TABLE, null, null, null, null, null, null);

int firstNameColumn = c.getColumnIndex("name_column");
int protectedColumn = c.getColumnIndex("protected_id_column");

ArrayList<String> results = new ArrayList<String>();
int i = 0;

c.moveToFirst();
do {
    i++;
    String firstName = c.getString(firstNameColumn);
    String protectedID = c.getString(protectedColumn);
    results.add(firstName + protectedID); // NEED TO add here 
} while (c.moveToNext()); 

sqliteDatabase.close();

Скажите, пожалуйста, какие изменения я делаю и как мне показать свою базу данных в ListView.

С наилучшими пожеланиями.

Ответы [ 2 ]

4 голосов
/ 25 января 2012

Сделайте Adapter добавьте свои ListArray значения к нему, а затем setAdapter к вашему списку просмотра просто,

После вашего кода добавьте всего две строки,

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, results);
mListView.setAdapter(adapter);

Кроме того, ваш вопрос звучит просто для Android, так что просто посмотрите на эти ссылки ..

SimpleCursorAdapters и ListViews

База данных Android SQLite и ContentProvider - учебное пособие

Заполнение макета данными

0 голосов
/ 25 января 2012

Так как вы используете Курсор, я бы на самом деле пошел с SimpleCursorAdapter .CursorAdapter позволяет избежать загрузки всего набора данных в память, ускоряя начальную загрузку и избегая огромных выделений с большими наборами данных.

Чтобы подробнее остановиться на базовой настройке в этом посте ( SimpleCursorAdapters и ListViews ), вы также захотите установить связыватель представления, чтобы настроить способ привязки данных к представлению, т.е.объедините две строки.

Примерно так:

SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
          //you're only using one view, so we can ignore columnIndex
          TextView text = view.findViewById(R.id.list_item_text);

          //the cursor is already in position for this list item
          int firstNameColumn = c.getColumnIndex("name_column");
          int protectedColumn = c.getColumnIndex("protected_id_column");
          String firstName = c.getString(firstNameColumn);
          String protectedID = c.getString(protectedColumn);
          text.setText(firstName+protectedID);
          return true; //we have handled binding the data
      }
 };

Затем, когда вы настраиваете свой адаптер, вы передаете ему макет, который можно использовать для каждого элемента.Макет должен содержать TextView для хранения одного текстового элемента, который вы хотите показать.Вы можете использовать android.R.layout.simple_list_item_1 для этого, как предложил user370305, но я не уверен, каков идентификатор его TextView - это может быть android.R.id.text1.

SimpleCursorAdapter adapter = new SimpleCursorAdapter(
    context,           //can be your Activity 
    R.layout.list_item,  //xml layout containing textview with id 'list_item_text'
    c,                 //the cursor
    new String[] {"name_column"}, //the column to read (we'll do more in the binder)
    new int[] {R.id.list_item_text}, //the view to hold the data
    0 //no flags
);
adapter.setViewBinder(binder);    

Добавьте его в свойListView аналогично:

ListView listView = //your ListView reference
listView.setAdapter(adapter);

//or in a ListActivity:
setListAdapter(adapter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...