1

こんにちは、私はこのように見えるデータベース内のいくつかのアイテムにマップする CursorAdapter を持っています

ゲームID|タイプ|picurl|currPlayer|作成者

gameid は、2 つのタイプがある各ゲームの一意の ID です。プレイヤーゲームとボットゲーム。ゲームがボット ゲームの場合、picurl/currPlayer/creator は null になります。これが私のアダプターコードです。

ここに私のコードがあります: http://pastebin.com/61KZbir1

私が抱えている問題は、最初の読み込みではいくつかの画像が表示されないことがありますが、スクロールすると表示されることです。これに加えて、ボット ゲームで間違ったテキストや画像が表示されることがありますが、スクロールすると自動的に修正されます。これを修正したことの 1 つは、すべてのデータをテーブルに挿入しているときに、UI を更新するコンテンツ オブザーバーの登録を解除し、挿入が完了した後に再登録して、UI を更新するためにメソッドを 1 回呼び出すことです。メソッドは、refreshGamesList() という名前のペーストビンの下部にあります。しかし、削除/挿入のコンテンツ オブザーバーの登録を解除しないと、最初はビューが正しく表示されませんが、その後、より多くのコールバックが取得され、それらのコールバックで修正されます。私はどこでも解決策を探しましたが、何も見つかりませんでした。

4

1 に答える 1

3

私はついにそれを修正しました!問題は主に bindview からタスクを起動することでした。設計が悪いと思います。実行していたすべてのクエリを bindview の asynctask から UI スレッド (アクティビティ) の asynctask に移動し、それから matrixcursor を使用してカスタムを構築しました。他のテーブルから必要なデータを含むカーソル。matrixcursor をアダプターに渡し、レイジーローダーが渡していたイメージビューを直接操作するように変更し、adapter.notiftdatasetchanged() を呼び出すだけで、はるかにうまく機能しました。基本的に、私は多くのコードを作り直しました。なぜなら、bindview から多くの asynctasks を起動してすべてを台無しにしていたので、一度だけ正しく呼び出されるようにそれを ui スレッドに移動したからです。

于 2012-11-02T11:45:14.467 に答える