2017-05-24 1 views
-2

내 애플리케이션에서 서버의 데이터를 표시하고 서버에서 모든 데이터를 보내고 싶습니다. android i에서 의 10 데이터를 가져와 표시하고 10 개의 데이터를 서버에 보내고 다른 10 개의 데이터를 표시 할 때 표시합니다.
서버 요청은 Retrofit2입니다.Android에서 recyclerView에서 loadMore를 사용하는 방법

어떻게 안드로이드에 게으른 로더를 사용할 수 있습니까?

+0

내 프로젝트를 github, https://github.com/shayanpourvatan/PaginationHandler에서 살펴보십시오. –

답변

0

API가 Limit 및 Offset 매개 변수를 지원하는지 확인합니다 ( ). 그러면 API가 초기에 오프셋 10으로 10 개의 요소를 제공 한 다음 목록의 끝에 도달하면 offset = (Number of 목록의 항목)

0

웹 서비스에 페이지 변수를 전달해야합니다. 여기에서 llManager는 리사이클 러 뷰에 첨부 된 LinearLayoutManager이고 총 레코드는 사용 가능한 총 데이터 수입니다.

마지막으로 리사이클 러 뷰의 객체에 도달했을 때 웹 서비스를 호출하고 리사이클 러 뷰의 현재 데이터가 사용 가능한 총 데이터보다 작 으면 서비스의 페이지 카운트 값이 증가하여 새 페이지 데이터를 가져옵니다.

또 하나의 사실은 서비스가 이미 데이터를 가져 오기 위해 실행 중인지 확인하기 위해 isCalling 플래그를 유지 관리하는 것입니다.

recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { 
      @Override 
      public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
       super.onScrollStateChanged(recyclerView, newState); 
      } 

      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       super.onScrolled(recyclerView, dx, dy); 

       int visibleThreshold = 1; 
       int totalItemCount = llManager.getItemCount(); 
       int lastVisibleItem = llManager.findLastVisibleItemPosition(); 
       if (totalItemCount <= (lastVisibleItem + visibleThreshold)) { 
        if (totalRecords > totalItemCount && !isCalling) { 
         page = page + 1; 

         callwebservice(); 
        } 

       } 

      } 
     }); 
관련 문제