2013-05-01 6 views
12

私はAndroidアプリのために少し質問があります。 私は長い間検索しましたが、私の問題については何も見つかりませんでした。Android - メッセージ表示のようにリストビューを逆にする

シナリオ復帰リストビュー(Facebookのメッセンジャーとして)を表示する必要があります。 ユーザーが上にスクロールすると、さらにメッセージを読み込みます。

問題notifiyDataAsChanged()コール後、スクロールは同じではありません! ロード前と同じ位置を保ちたい。

私はそのコードを試みた:

// save index and top position 
int index = list.getFirstVisiblePosition()+result.size(); 
View v = list.getChildAt(index); 
int top = (v == null) ? 0 : v.getTop(); 

// ... 
// restore 
list.setSelectionFromTop(index, top); 

をしかし、スクロールは、正確に同じ負荷後のではありません。

アイデアはありますか?

答えて

35

私はあなたのリストビューでTranscriptModeStackFromBottomを使用してになるはずだと思う:

android:stackFromBottom="true" 
android:transcriptMode="normal" 

通常に転写モードを設定することにより、それが最後の項目がビューにすでにだった場合にのみ、一番下までスクロールします。こうすることで、notifydatasetchangedを呼び出すと、ユーザは中断することなく以前のリストビューアイテムを表示できます。

+0

感謝。私はあなたのポストを理解していません。私がアイテムNo°32にいる場合、notifydatasetchangedした後、再びアイテム32になりたい!しかし、今、このメソッドが呼び出されると、私はこの項目にはありません... –

+5

この回答は誤解を招くものです。 'stackFromBottom'はオブジェクトを下に移動(スタック)しますが、逆順は作成しません。 @FlorianMacLangladeが尋ねたものではないオブジェクトが、下から追加されています(私も同じ解決策を探しています)。 – Diolor

+0

@Diolorが正しいです。 'stackfromBottom'はあなたが望むものの一部です。他の部分は逆の順序で、ここで答えられます:http://stackoverflow.com/questions/10941317/inverted-listview-in-android – Chris

2

これは同じコードを使用して修正しましたが、位置を復元する前にアダプタに追加するアイテムの数でインデックス変数を更新します。そのトリックをするようだ。

2

次のように実行します。あなたの助けを

Collections.reverse(YourList); // ADD THIS LINE TO REVERSE ORDER! 
YourList.notifyDataSetChanged; 
関連する問題