4

次のコードを使用して、無限の 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);  
4

1 に答える 1

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

ありがとう!
よろしくお願いします。
ロドリゴ

于 2012-12-19T15:47:49.127 に答える