0

У меня есть приложение, которое принимает данные с различным атрибутом, добавляет их в базу данных и затем показывает его через ListView.Android Простой адаптер курсора и курсор

Я сделал часть, где данные добавлены, но я не могу понять, как ее получить (на данный момент я просто хочу имя) из базы данных и заполнить ее в ListView.

Это - часть в классе базы данных.

public Cursor getCursor() { 
    Cursor c = null; 
    sqLiteDatabase = this.getReadableDatabase(); 
    String query = "SELECT * FROM tbl_customer"; 
    String where = null; 
    c = sqLiteDatabase.query("tbl_customer", new String[]{"Name"}, where, null, null, null, null); 
    if (c != null) { 
     c.moveToFirst(); 

    } 
    return c; 
} 

здесь является частью кода в деятельности, которую я хочу показать ListView в.

private void populateListView(){ 
    Cursor cursor = db.getCursor(); 
    String []From = new String[]{"Name"}; 

    int [] to = new int[R.id.textView]; 

    SimpleCursorAdapter adapter; 
    adapter = new SimpleCursorAdapter(this,R.layout.listview_items,cursor,From,to,0); 

    ListView listView = (ListView)findViewById(R.id.ShowDataListView); 
    listView.setAdapter(adapter); 
} 

Пожалуйста, наставит меня, где я пошло не так, и поправьте меня.

+0

так, используя код размещен, это ListView пусто? – Lino

+0

Я думаю, что проблема есть. вы извлекаете столбец «Имя» и используете «ESM». – Vivart

+0

Одна вещь, я бы предложил, чтобы не тратить время на SimpleCursorAdapter на устаревшее. use loadermanager – Vivart

ответ

0

Вы имеете указание From и To Params на SimpleCursorAdapter.

adapter = new SimpleCursorAdapter(this,R.layout.listview_items,cursor, 
new String[] { "Name" },to,0); 

Что касается to, вы должны поместить идентификатор вашего TextView от R.layout.listview_items. Давайте предположим, что идентификатор вашего TextView является R.id.text1 то адаптер будет выглядеть так,

adapter = new SimpleCursorAdapter(this,R.layout.listview_items,cursor, 
new String[] { "Name" }, 
new int[] { android.R.id.text1 }, 
0); 

Вот, посмотрите на documentation ухватить его более четко.

+0

tnx для ответа ур, но это не сработало. я получаю эту ошибку: E/AndroidRuntime: НЕУСТРАНИМОГО ИСКЛЮЧЕНИЕ: главный java.lang.OutOfMemoryError: ИНТ [] длины 2131230746 переполнится –

+0

В вашем методе getCursor, вы должны закрыть базу данных до возвращения курсора. sqLiteDatabase.close(); return c; – fluffyBatman

+0

Это была проблема. , но теперь я столкнулся с ошибкой, в которой говорится, что «столбец -id не существует». Хотя у меня есть идентификатор столбца, я попытался изменить «ID» на «-id» и обновить базу данных, изменив ее версию, но она кажется, что я делаю это неправильно. –

1

вы используете R.id.textView как размер массива

int [] to = new int[R.id.textView]; 

это должно быть, как это

int [] to = new int[]{R.id.textView}; 
+0

Спасибо, дорогая. –