2017-05-23 3 views
0

RecyclerViewの最後の項目の後にスクロールするときに、さらに項目をロードしようとしていますが、何も起こりません。 &最後の項目に移動しましたが、何も起こっていないのに、画面ロード時にはただ1回しかコールしません。&以下はRecyclerViewページネーションが機能しない

私のコードは、スクロール部コード

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); 
} 

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 

      } 

     }); 

である私を助けてください。

答えて

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(); 
         } 
        } 
       } 
      } 
     }; 
    } 
関連する問題