Android ListView не обновляется после изменения курсора
Следующий код используется для заполнения бесконечного ListView. Когда пользователь достигает конца списка, приложение вызывает асинхронную задачу, чтобы получить больше элементов, а затем при выполнении новый курсор возвращается и объединяется с предыдущим. Проблема в том, что этот код не работает на ICS и Jelly Bean, но работает на Froyo и Gingerbread. В ICS и JellyBean просмотр списка становится пустым, но если вы регистрируете размер курсора, вы получаете размер объединенного курсора.
Cursor[] cursors = new Cursor[2];
//actual cursor
cursors[0] = resourceCursor.getCursor();
//new cursor returned by async task
cursors[1] = result;
MergeCursor mergeCursor = new MergeCursor(cursors);
resourceCursor.changeCursor(mergeCursor);
1 ответ
Хорошо, я нашел решение, кажется некрасивым решением, но оно работает. В моем исследовании все проблемы, казалось, касались проблемы после Honeycumb, поэтому я изменил уровень API на 11, чтобы сделать доступным swapCursor, а затем в моем коде:
Cursor[] cursors = new Cursor[2];
//actual cursor
cursors[0] = resourceAdapterCursor.getCursor();
//new cursor returned by async task
cursors[1] = result;
MergeCursor mergeCursor = new MergeCursor(cursors);
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.GINGERBREAD){
resourceAdapterCursor.swapCursor(mergeCursor);
} else {
resourceAdapterCursor.changeCursor(mergeCursor);
}
Спасибо!
С наилучшими пожеланиями.
Родриго