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);
}

Спасибо!
С наилучшими пожеланиями.
Родриго

Другие вопросы по тегам