Programing

Android 스크롤 끝에서 동적으로 Listview를로드합니까?

crosscheck 2020. 11. 25. 07:40
반응형

Android 스크롤 끝에서 동적으로 Listview를로드합니까?


Http 서버에서 한 번에 20 개씩 목록보기를로드 중입니다. 목록보기가 끝나면 서버에서 다음 20 개 데이터를로드하고 싶습니다. 이 프로세스는 서버에서 데이터가 끝날 때까지 계속됩니다 .BaseAdapter를 확장하여 처음 20 개를 채우는 클래스를 사용했습니다. 데이터. 어떻게해야합니까 ??


이것은 우아한 솔루션으로 보입니다. http://benjii.me/2010/08/endless-scrolling-listview-in-android/

AbsListView.OnScrollListener또한를 구현하고 AsyncTask를 사용하여 현재 스크롤 뷰에 남아있는 항목의 특정 임계 값에 도달하는 즉시 더 많은 콘텐츠를로드합니다.


Ok 나는 이것이 일반적인 문제라는 것을 보았으므로 사용자 정의로드 가있는 작은 라이브러리 를 더 만들고 github 에서 ListView를 새로 고 칩니다 . 여기 에서 확인 하십시오 . 모든 것이 저장소에 설명되어 있습니다.


AbsListView.OnScrollListener정보를 얻고 더 많은 데이터를로드 할 수있는를 구현할 수 있습니다 .

예를 참조하십시오

....
ListView.setOnScrollListener(this);
....

그런 다음 https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L287을 살펴보십시오.

또는 sdk 예제에서 List9 예제살펴보십시오 .


Heiko Rupp의 코드는이 문제에 대한 최선의 선택입니다. 당신이해야 할 유일한 일은 코드를 사용하여 목록의 끝이 있는지 확인 onScrollListener하고 구현 onScroll()하는 것입니다.

boolean loadMore =  firstVisibleItem + visibleItemCount >= totalItemCount-1;

사실이라면 정기적 인 방식으로 데이터를로드합니다.

이 스 니펫에 대한 thaks Heiko Rupp :)


이것은 목록보기의 끝에서 더 많은 데이터를로드하는 데 사용한 것입니다.

        listview.setOnScrollListener(new OnScrollListener(){

        @Override
        public void onScroll(AbsListView view,
        int firstVisibleItem, int visibleItemCount,
        int totalItemCount) {
        //Algorithm to check if the last item is visible or not
        final int lastItem = firstVisibleItem + visibleItemCount;
        if(lastItem == totalItemCount){                 
        // you have reached end of list, load more data             
        }
       } 
        @Override
        public void onScrollStateChanged(AbsListView view,int scrollState) {
        //blank, not using this
        }
        });

비 UI 스레드에서 뷰를 실수로 업데이트하려고 할 때이 문제가 발생했습니다. ui 업데이트 코드를 ui 스레드에 푸시하면 문제가 해결되었습니다!

Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(new Runnable() {
    @Override
    public void run() {
            // insert ui update code here
        }
    }
});

참고 URL : https://stackoverflow.com/questions/5065339/android-dynamically-load-listview-at-scroll-end

반응형