как поместить в массив некоторые элементы из базы данных?

#android #database #arrays

#Android #База данных #массивы

Вопрос:

В моем приложении я хочу поместить в массив некоторые элементы из базы данных. Я могу видеть их в виде списка, используя эту функцию :

 private void fillData() 
{
    c = db.fetchListId(listid);
    startManagingCursor(c);

    adapter = new SimpleCursorAdapter(this, R.layout.listproduct, c,
                                      new String[] { DbAdapter.KEY_ITEM,
                                                     DbAdapter.KEY_QUANTITY,
                                                     DbAdapter.KEY_UNITS }, 
                                      new int[] { R.id.prod1,
                                                  R.id.prod2, 
                                                  R.id.prod3 }
                                     );

    setListAdapter(adapter);
}
  

Но я не знаю, как я могу поместить их в массив.

Кто-нибудь может мне помочь, пожалуйста?

Комментарии:

1. Что вы хотите сделать с массивом? К каким типам относятся столбцы базы данных?

2. В какой массив вы хотите их поместить? Вы хотите преобразовать строки в объекты и получить массив MyObject[]? Или вы хотите многомерный массив строк? или что-то еще?

3. Я хочу поместить этот массив в EditText. Это будет сообщение, которое я хочу отправить, и я хочу выглядеть примерно так: «лук 1 кг, груши 2 кг, ..». Речь идет о списке покупок, который я хочу отправить. Столбцы базы данных являются строковыми.

4. Я понятия не имею, каким должен быть массив.

5. вот очень хороший пример того, что вы хотите сделать. посмотрите внизу страницы. dharmendrajava.blogspot.com/2011/05 /…

Ответ №1:

Я полагаю, вы хотели бы сделать что-то вроде этого:

 private String[] getItems(<the selection params>) {
    Cursor c = db.retrieveItems(<the selection params>);
    String[] items = new String[c.getCount()];
    for (int i = 0; c.moveToNext() != null; i  ) {
        String item = c.getString(c.getColumnIndexOrThrow(DbAdapter.KEY_ITEM));
        String quantity = c.getString(c.getColumnIndexOrThrow(DbAdapter.KEY_QUANTITY));
        String units = c.getString(c.getColumnIndexOrThrow(DbAdapter.KEY_UNITS));
        items[i] = item   " "   quantity   units;
    }
    c.close();
    return items;
}
  

Я предположил, что в вашем классе DB есть метод под названием retrieveItems, который принимает некоторые параметры выбора, чтобы выполнить соответствующий запрос.
Я не тестировал код, может быть какая-то опечатка или незначительная ошибка, но я надеюсь, что это может направить вас к желаемому решению.

Комментарии:

1. Спасибо за ваш ответ. Я попробовал что-то вроде предыдущего ответа, и это работает, но я думаю, что этот метод тоже работает.

Ответ №2:

Вы определенно собираетесь начать с перебора курсора:

 while(c.moveToNext()){
  myString = c.getString(c.getColumnIndex("MyColumnName")); // or somesuch
  array[x][y][z] = myString; // also somesuch
}
  

Не зная больше о том, как вы хотите хранить данные, невозможно угадать, что вам нужно помимо c.moveToNext() .

Обновить:

Хорошо, значит, вы просто хотите собрать их в строку. Попробуйте что-то вроде:

 String theList="";
while(c.moveToNext()){
  theList  = c.getString(0)   " "   c.getString(1)   c.getString(2)   "n";
}