Android: что использовать вместо курсора - PullRequest
0 голосов
/ 12 января 2011

В моем приложении я использую курсор для получения информации из базы данных SQLite, например:

Cursor contacts = dataBase.select("SELECT _idContact FROM Contacts");

  if (contacts.getCount() > 0) {

   if (IMLayout.getVisibility() == View.VISIBLE) {


    int k = contacts.getCount();
    for (int j = 0; j < k; j++) {
     if (j == 0) {
      contacts.moveToFirst();
     } else {
      contacts.moveToNext();
     }

То, что я хочу, это оптимизировать "для", используя цикл Enhanced for. Для этого я должен использовать массив или другие, но не курсоры, потому что курсоры не работают для цикла Enhanced for. Как преобразовать курсор в arrayList?

Ответы [ 2 ]

0 голосов
/ 12 января 2011

Вы можете значительно упростить эту логику следующим образом:

Cursor contacts = dataBase.select("SELECT _idContact FROM Contacts");
while (contacts.moveToNext()) {
    // do stuff with this database entry
}
0 голосов
/ 12 января 2011

Усовершенствованный цикл for работает только с коллекциями, итерациями и массивами, и Cursor не относится к таким вещам.

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

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