Заполните счетчик в столбце базы данных, первая строка не учитывается - PullRequest
0 голосов
/ 16 февраля 2012
        db.open();
        cursor = db.getAllRecords();
        int i = 0;
        for(cursor.moveToFirst(); cursor.moveToNext(); cursor.isAfterLast()) { 
            spinnerItems[i] = cursor.getString(NAME_COLUMN);
            Log.v(TAG, "spinnerItem "+i+"="+spinnerItems[i]);
            i++;
        }

Почему приведенный выше код дает такой результат в LogCat?:

spinnerItem 0=name1
spinnerItem 1=name2
spinnerItem 2=name3
spinnerItem 3=name4 and so on

Когда база данных выглядит так:

row name
0   name0
1   name1
2   name2
3   name3
4   name4 and so on.

И каков наилучший способзаполнить счетчик всего содержимого из одного столбца базы данных?Выше я (пытаюсь) создать spinnerItems [], для чего я затем помещаю Aadapters в спиннер.

1 Ответ

1 голос
/ 17 февраля 2012

Ваш главный вопрос, причина того, что все отключено, в логике цикла for.

Цикл начинается с moveToFirst (), - курсор теперь находится в строке 0. Затем цикл проверяет, прошел ли онусловный, который является вызовом moveToNext () - курсор теперь находится в строке 1.

Итак, самая первая итерация, ваш курсор находится в строке 1 (или он будет полностью обходить цикл, если ваш курсор имеет только 1row!).

Лучше цикл for:

int i=0;
for (cursor.moveToFirst(); i < cursor.getCount(); i++) {
//Your code
cursor.moveToNext();
}

Что касается вашего другого вопроса, к сожалению, у меня нет ответа ... Я всегда строю их программным способом, как этот.Быстрый поиск в Google дал мне это, хотя: http://androidforbeginners.blogspot.com/2010/02/how-to-populate-spinner-widget-from.html

...