2017-05-23 4 views
0

RecyclerView의 마지막 항목 이후로 스크롤 할 때 더 많은 항목을로드하려고하지만 아무 일도 일어나지 않습니다. & 마지막 항목으로 이동했지만 아무 것도 발생하지 않고 그냥 화면로드 & 시간에 한 번만 호출됩니다.RecyclerView 페이지 매김이 작동하지 않음

다음은

inspectionRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView_Inspections); 
      final LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); 
      inspectionRecyclerView.setLayoutManager(mLayoutManager); 

inspectionRecyclerView.setOnScrollListener(new EndlessRecyclerOnScrollListener(
       mLayoutManager) { 
      @Override 
      public void onLoadMore(int current_page) { 
       // do somthing... 

       Log.v("Call", "Load more"); 
//api call to load more items goes here 

      } 

     }); 

스크롤 일부 코드 내 코드

public abstract class EndlessRecyclerOnScrollListener extends 
     RecyclerView.OnScrollListener { 
    public String TAG = EndlessRecyclerOnScrollListener.class 
      .getSimpleName(); 

    private int previousTotal = 0; 
    private boolean loading = true; 
    private int visibleThreshold = 5; 
    int firstVisibleItem, visibleItemCount, totalItemCount; 

    private int current_page = 1; 

    private LinearLayoutManager mLinearLayoutManager; 

    public EndlessRecyclerOnScrollListener(
      LinearLayoutManager linearLayoutManager) { 
     this.mLinearLayoutManager = linearLayoutManager; 
    } 

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

     visibleItemCount = recyclerView.getChildCount(); 
     totalItemCount = mLinearLayoutManager.getItemCount(); 
     firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition(); 

     if (loading) { 
      if (totalItemCount > previousTotal) { 
       loading = false; 
       previousTotal = totalItemCount; 
      } 
     } 
     if (!loading 
       && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) { 
      // End has been reached 

      // Do something 
      current_page++; 

      onLoadMore(current_page); 

      loading = true; 
     } 
    } 

    public abstract void onLoadMore(int current_page); 
} 

제발 도와주세요입니다.

답변

1

1 도움이된다면 내가 activitiesData라는 컬렉션에 서버 저장 위치에서 내 데이터를 호출이 활동을 시작하면 안녕하세요)이 보십시요.

2) activitiesData에 이제 RecyclerView에 표시하고 싶은 데이터가 있습니다.

3) activitiesData를 사용하여 RecyclerView를 채 웁니다.

4) 이제 당신은 scrollListener 내가 코드를 다음을 사용하고 나를 위해 잘 작동 코드

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 

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

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

       //activitiesData is collection used to populate the recycler Adapter 
       activitiesData.remove(activitiesData.size() - 1); 
           recyclerViewAdapter.notifyItemRemoved(activitiesData.size()); 

       // Make a networking call to get the data on page scrolled 

       //after you get response 
       recyclerViewAdapter.notifyDataSetChanged();     
      } 
     }); 
0

살펴 보도록합니다. API 호출이 완료된 후로드 값을 FALSE로 설정하는 것을 잊지 마십시오.

public RecyclerView.OnScrollListener getOnScrollListener() { 
     return new RecyclerView.OnScrollListener() { 
      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 

       if (dy > 0) { 
        visibleItemCount = lm.getChildCount(); 
        totalItemCount = lm.getItemCount(); 
        pastVisibleItem = lm.findFirstVisibleItemPosition(); 
        if (!isLoading) { 
         if ((visibleItemCount + pastVisibleItem) >= totalItemCount) { 
          isLoading = true; 
          loadNextPage(); 
         } 
        } 
       } 
      } 
     }; 
    }