listAdapterを使用してリストビューを更新した後、リストに入力された最後の要素が表示されるように、リストが一番下までスクロールされていることを確認します。これどうやってするの ?
私はこれを試しましたが運はありませんでした:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
ありがとうございました
listAdapterを使用してリストビューを更新した後、リストに入力された最後の要素が表示されるように、リストが一番下までスクロールされていることを確認します。これどうやってするの ?
私はこれを試しましたが運はありませんでした:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
ありがとうございました
回答:
リストのデータがいつ変更されたかがわかっている場合、リストの選択を最後の行に設定することにより、リストを手動で一番下までスクロールするように指示できます。何かのようなもの:
private void scrollMyListViewToBottom() {
myListView.post(new Runnable() {
@Override
public void run() {
// Select the last row so it will scroll into view...
myListView.setSelection(myListAdapter.getCount() - 1);
}
});
}
リストビューでこれらのパラメーターを使用する必要があります。
スクロール
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
リストの先頭を下に設定します
lv.setStackFromBottom(true);
これらのパラメータをXMLで設定することもできます。このような:
<ListView
...
android:transcriptMode="alwaysScroll"
android:stackFromBottom="true" />
TRANSCRIPT_MODE_ALWAYS_SCROLLとsetSelectionの組み合わせにより、うまく機能しました
ChatAdapter adapter = new ChatAdapter(this);
ListView lv = (ListView) findViewById(R.id.chatList);
lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
lv.setAdapter(adapter);
adapter.registerDataSetObserver(new DataSetObserver() {
@Override
public void onChanged() {
super.onChanged();
lv.setSelection(adapter.getCount() - 1);
}
});
私はボタンのクリックに応答してこれを使用して成功したので、コンテンツを更新した後にも使用できると思います。
myListView.smoothScrollToPosition(theListAdapter.getCount() -1);
文字起こしモードは必要なものであり、GoogleトークとSMS / MMSアプリケーションで使用されます。アイテムを追加するときに、アダプターでnotifyDatasetChanged()を正しく呼び出していますか?