2011-12-19 12 views
0

シナリオ:カスタムアダプタでリストビューを使用しています。私は5秒ごとにデータを取り出し、それをリストビューに表示しています。リストビューを更新してリストの先頭に移動

問題:リフレッシュするたびに、リストが一番上にスクロールします。私はリストをスクロールの観点からそのまま残し、リフレッシュする基礎となるデータだけを残したいと思う。

現在のコード:これは、新しいデータを取得するたびに呼び出されます。

mListAdapter = new CustomListAdapter(this, mListData); 
mList.setAdapter(mListAdapter); 
+0

それは動作しない)'アダプタに?または、ArrayAdapterのサブクラスでない場合は、DataSetObserverを登録しますか? – Jave

答えて

1

のように呼び出すことができません再初期化アダプタアダプタを無効にし、データにこの1をフェッチするたびに入れてみてください。

adapter.notifyDataSetChanged(); 
+0

質問。 notifyDataSetChanged()を呼び出すと、ListViewが最後にオフになった場所が保持されますか? – Andy

+0

はい。そこに残るはずです –

1

の代わりにこれを呼び出して、あなたは、アダプタに新しいデータを設定し、notifyDataSetChangedを呼び出す必要があります。

希望すると便利です。

+0

あなたを助けましたか? –

1

新しいmListDataを取得すると、その後、ちょうどあなたが代わりにあなたのコードのこの

mListAdapter.notifyDataSetChanged(); 
0

あなたはリストビューはに更新されません

mList.setSelection(mListData.size() - CONSTANT.CONTENT_SIZE); 

この方法を使用することができますトップ。 それとももバインドさリストを更新することにより、

adapter.notifydatasetchanged 

を使用することができます。

+0

これは何ですかCONSTANT.CONTENT_SIZE? – PravinCG

+0

このsetSelectionは、リストビューを最上位にするリストアイテムに設定します。私たちのリストには10​​のアイテムがあります。 5項目で更新します。 CONSTANT.CONTENT_SIZE = 5 このCONSTANT.CONTENT_SIZEは、リストで更新する項目の数です。 – san

+0

これは質問には関係しませんが、問題はリストが一番上に表示されないようにすることです。 – PravinCG

0

これは私の仕事:あなたが代わりに新しいアダプタを作成するあなたのリストを交換し、 `(notifyDataSetChanged呼び出す場合

adapter.setData(list); 
adapter.notifyDataSetChanged(); 
関連する問題