短いバージョン: データの読み込み中に、アダプター内のデータセットの数が (最初の 4 から) 増加します。getView
新しいデータが到着した後 (getCount
現在は 7 を返します)、位置 4 から 6 が照会されます。代わりに、最初の 4 つの項目をすぐに更新したいと思います。
私の質問 -が起動されたときに、位置 0 から 3のListView
クエリを再度作成するにはどうすればよいですか?getView
notifyDataSetChanged
この動作の原因は、ListView
. 私のアプローチは大まかにChet Haase の例に基づいています。 aは( に加えて)DataSetObserver
私のアダプターも受け取り、を に追加してアニメーションを起動します。アニメーションは( を使用して) で実行され、300 ~ 600 ミリ秒かかります。アニメーションを開始する行をアウトコメントすると、動作は思いどおりになります。は位置 0、1、2、3 に対して呼び出され、続いて 0、1、2、3、4、5、6 に対して呼び出されます。onDataSetChange
ListView
onPreDrawListener
ListView
ViewTreeObserver
onPreDrawListener
View.animate
getView
次のスクリーンショット (左) は、この望ましくない状態でリストがどのように見えるかを示しています。これを logcat のスクリーンショットと比較してください。ビューのテキストは、logcat の「View Text =」の後に来るものと一致します。右側は、ListView が最終的に位置 1 ~ 4 について getView を再クエリすることを決定した後、最終的に落ち着くものです。