更改光标后Android ListView没有刷新

时间:2012-12-19 13:45:56

标签: android listview android-cursoradapter mergecursor

以下代码用于填充无限的ListView。 当用户到达列表的末尾时,应用程序调用异步任务以获取更多项目,然后在执行后,返回新游标并与之前的游标合并。 问题是这个代码不适用于ICS和Jelly Bean,但适用于Froyo和Gingerbread。 在ICS和JellyBean上,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);  

1 个答案:

答案 0 :(得分: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);
}

谢谢!
最好的问候。
罗德里戈