#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";
}