programing

Listview 목록 업데이트 후 목록 끝으로 스크롤

closeapi 2023. 8. 19. 10:19
반응형

Listview 목록 업데이트 후 목록 끝으로 스크롤

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에서 동일한 문제를 구글로 검색하면 이것을 찾을 수 있기 때문에 이 답변을 추가했습니다.

안부 전해요

사용 : 목록의 머리글을 맨 아래로 설정합니다.lv.setStackFromBottom(true);

저를 위해 작업했으며 목록이 처음 표시될 때 자동으로 맨 아래로 스크롤됩니다.그런 다음 목록이 스크롤됩니다.TRANSCRIPT_MODE_ALWAYS_SCROLL.

사용합니다

setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);

맨 아래에 항목을 추가하고 대화 내용처럼 이전 항목을 맨 위에서 스크롤합니다.

스크립트 모드는 Google Talk 및 SMS/MMS 응용 프로그램에서 사용하는 것입니다.항목을 추가할 때 어댑터에서 notifyDatasetChanged()를 올바르게 호출하고 있습니까?

가장 간단한 해결책은 다음과 같습니다.

    listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
    listView.setStackFromBottom(true);

언급URL : https://stackoverflow.com/questions/3606530/listview-scroll-to-the-end-of-the-list-after-updating-the-list

반응형