2012-12-19 90 views
4

以下代碼用於填充無盡的ListView。 當用戶到達列表末尾時,應用程序調用異步任務以獲取更多項目,然後在後期執行時返回新光標並與之前合併。 問題是此代碼不適用於ICS和果凍豆,但適用於Froyo和薑餅。 在ICS和JellyBean上,listview變爲空,但如果記錄光標大小,則會獲得合併遊標的大小。Android ListView更改光標後不刷新

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); 
+0

你好@soynerdito感謝您的回答,我試圖改變光標後,但沒有運氣... – rodrigocoelho

+0

有相同問題的另一名開發者:http://buradabuldum.blogspot.pt/2012/01/android -developers-mergecursor-broken.html – rodrigocoelho

回答

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

謝謝!
此致敬禮。
羅德里戈

+1

但是不要忘記,swapCursor沒有關閉舊的光標。 –