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);
답변
이것을 ListFragment에서 얻으려면 :
getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
getListView().setStackFromBottom(true);`
누군가가 ListFragment와 동일한 문제에 대해 Google 검색을하면이 것을 발견하기 때문에이 답변을 추가했습니다.
문안 인사
답변
사용 : 목록의 머리를 아래로 설정 lv.setStackFromBottom(true);
나를 위해 일했고 목록이 처음 표시되면 자동으로 맨 아래로 스크롤됩니다. 그런 다음 목록이와 같이 스크롤됩니다 TRANSCRIPT_MODE_ALWAYS_SCROLL
.
답변
나는 사용한다
setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
하단에 항목을 추가하고 오래된 항목은 대화 내용과 같이 상단에서 스크롤합니다.