Так как вы используете Курсор, я бы на самом деле пошел с 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);