cursor.moveToNext () не работает в onLoadFinished после поворота экрана - PullRequest
0 голосов
/ 09 октября 2018

Я использую пользовательский RecyclerView.Adapter, чтобы показать элементы списка.Я использую LoaderManager.LoaderCallbacks<Cursor> для извлечения данных из базы данных, а в onLoadFinished() я использую пользовательский метод для извлечения данных из курсора и сохранения их в пользовательском ArrayList по одному, используя while(cursor.moveToNext()).Список успешно загружен.Но при повороте экрана список исчезает.

Когда я отлаживал код, я узнал, что onLoadFinished() вызывается при повороте экрана, но цикл while не работает, даже если курсор не равен нулю, а курсорколичество больше 0.

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    loadAndroidFlavours(cursor);

    mCursor = cursor;
    invalidateOptionsMenu();
}

private void loadAndroidFlavours(Cursor cursor) {
    if (cursor.getCount() != 0) {
        while (cursor.moveToNext()) {
            int columnIndexID = cursor.getColumnIndex(AndroidFlavourEntry._ID);
            int columnIndexFlavour = cursor.getColumnIndex(AndroidFlavourEntry.COLUMN_FLAVOUR);
            int columnIndexVersion = cursor.getColumnIndex(AndroidFlavourEntry.COLUMN_VERSION);

            int ID = cursor.getInt(columnIndexID);
            String flavour = cursor.getString(columnIndexFlavour);
            String version = cursor.getString(columnIndexVersion);

            mFavoritesList.add(new AndroidFlavour(ID, flavour, version));
        }
        loadAndroidFlavours();
    } else {
        hideList();
    }
}

Я застрял.Пожалуйста, помогите с объяснением.Привет!

...