質問

私は、新しいイベントがX秒ごとにポーリングされているチャットルームアプリケーションを構築しています。起こるたびに、このコードは、新しいデータでRoomAdapter(ArrayAdapterのカスタムサブクラス)を更新し、一番下にそれをスクロールます:

RoomAdapter adapter = (RoomAdapter) getListAdapter();
for (int i=0; i<newEvents.size(); i++)
 adapter.add(newEvents.get(i));
getListView().setSelection(events.size()-1);

これは、ユーザーが部屋の歴史を一瞥までスクロールしている場合はポーリングが発生したとき、下に彼女を飛び降りるために起こっていることを除いて、結構です。私は何をしたいのは、ユーザーがリストの一番下にすでにある場合、それは新しいイベントのために投票した後、そこに留まるようにそれを持っています。ユーザーの意図上向きにスクロールした場合、私は、ユーザー邪魔されないしたいと思います。

私はすでにリストビューの一番下までスクロールしていたとき、私は検出方法を教えてください。

注:私はgetListView()getSelectedItemPositionを()、行うことはできませんので、<のhref = "http://developer.android.com/reference/android/widget/ListView.html#setSelection%28int%29" relが=「nofollowをnoreferrer」>ドキュメントがタッチモードでは、実際に項目を選択していないときsetSelectionを呼び出し、に注意して、ちょうどそれにスクロールします。

役に立ちましたか?

解決

私はこれを試していないが、どのようにgetLastVisiblePosition()==getCount()-1は? (ListViewのメソッド)

他のヒント

しかし、それは正しい方法ではありません。

使用します •android:transcriptMode
- リストの行動内容が
を変更 - 「無効」、
スクロールしません - 「ノーマル」、最後の項目が表示
であれば下にスクロールします - 「alwaysScrollは」、常に一番下までスクロールし
android:stackFromBottom
- 逆の順序でスタック項目
- アダプタ
からの最後の項目で始まります チャットのための•便利な
- メッセージング、トーク、IRCなど

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top