Пользовательские идентификаторы в ListView - PullRequest
0 голосов
/ 01 июля 2011

Я пытаюсь заполнить список с продуктами.Я могу сделать это, но мне нужно, чтобы они имели собственные идентификаторы (те из базы данных SQLite).Как я могу это сделать?Это мой код без реализации id:

ArrayList<String> productNameList = new ArrayList<String>();
    ArrayList<String> productIdList = new ArrayList<String>();
    Cursor results = myDbHelper.getProducts();
    ListView lv = (ListView) findViewById(R.id.productlist);

    while (results.moveToNext()){
        productNameList.add(results.getString(results.getColumnIndex("name")));
        productIdList.add(results.getString(results.getColumnIndex("id")));
    }


    lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , productNameList));

1 Ответ

0 голосов
/ 01 июля 2011

Вы должны использовать SimpleCursorAdapter:

    String[] columns = new String[] { "_id", "name" };
    int[] to = new int[] { android.R.id.text1, android.R.id.text2 };

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, columns, to);
    lv.setAdapter(mAdapter));

"to" и "columns" определяют отображение: "colums" - это список имен столбцов базы данных, которые вы хотите прочитать SimpleCursorAdapter. А «to» - это список идентификаторов Android, указывающих, для какого виджета установлены значения из курсора.

В последнем коде это означает, что значение «_id» будет отображаться в текстовом поле с идентификатором android «android.R.id.text1», а значение столбца «name» будет идти в текстовое поле «android». .R.id.text2" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...