2016-07-26 68 views
1

我试图显示页脚在RecyclerView infinte滚动,但页脚有时显示如此之快,有时它并不显示在所有。是否在给定的代码有问题?RecyclerView页脚不显示

public class CustomRecyclerViewScrollListener extends RecyclerView.OnScrollListener { 
    int visibleCount = 0; 
    int totalItemCount = 0; 
    int pastVisibleItems = 0; 
    int lastVisibleItem=0; 

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

     visibleCount = llm.getChildCount(); 
     totalItemCount = llm.getItemCount(); 
     pastVisibleItems = llm.findFirstVisibleItemPosition(); 
     lastVisibleItem=llm.findLastVisibleItemPosition(); 
     if (!isLoading && !dataFinished && list.size() % 10 == 0) { 
      if ((visibleCount + pastVisibleItems) >= totalItemCount) { 
        isLoading = true; 
        loadMore(); 
        adapter.showViewHolderFooter();     

       } 
      } 
     } else {    
       adapter.hideViewHolderFooter();    

     } 
    } 
+0

你可能要开始之前显示'loadMore'前躯。 –

回答

1
private int firstVisibleItem, visibleItemCount,totalItemCount,pastVisiblesItems; 
private boolean loading = true; 

    reyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
       @Override 
       public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
        if (dy > 0) //check for scroll down 
        { 
         visibleItemCount = mLayoutManager.getChildCount(); 
         totalItemCount = mLayoutManager.getItemCount(); 
         pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition(); 

         if (loading) { 
          if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) { 
           loading = false; 
           expandapleInt++; 

           //Your operation 
         } 
         } 
        } 
       } 
      }); 

在我的每个操作代码集loading = true;在代码中设置isLoading假负载每次启动