2015-09-23 14 views
8

है, वहाँ आइटम नीचे हैं/दृश्य क्षेत्रचेक अगर RecyclerView अगर एक <code>RecyclerView</code> स्क्रॉल है की जांच कैसे करें, यानी स्क्रॉल

ऊपर मैं अपने recycler दृश्य जो notifyItemRangeInserted() और notifyItemRangeRemoved() का उपयोग करके काम करता है में एक ड्रॉपडाउन है। जब भी इस के किसी भी होता है, मैं जाँच करना चाहते हैं, तो RecyclerView स्क्रॉल या नहीं है, जैसा कि मैंने एक और दृश्य, अख़बार में की तरह एक बैनर समायोजित करने के लिए है, उसके अनुसार

उत्तर

13

ये लीजिए: मेरे लिए

public boolean isRecyclerScrollable(RecyclerView recyclerView) { 
    return recyclerView.computeHorizontalScrollRange() > recyclerView.getWidth() || recyclerView.computeVerticalScrollRange() > recyclerView.getHeight(); 
} 
+0

में इस्तेमाल किया जाना चाहिए वहाँ भी राशि है जिसके द्वारा यह स्क्रॉल करने योग्य है पता लगाने के लिए एक तरीका है? मान लें कि सभी आइटम एक ही आकार के नहीं हैं – Sourabh

+0

@ सौरभ चुपचाप सभी आइटम दृश्य लोड किए बिना और उन्हें पृष्ठभूमि में मापने के बिना - मुझे शक है। – Simas

+0

कमाल, धन्यवाद –

3

विचार करता है, तो पिछले पूरी तरह से दिखाई तत्व है की जाँच करने के लिए है सूची में अंतिम तत्व।

private boolean isScrollable() 
{ 
    return mLinearLayoutManager.findLastCompletelyVisibleItemPosition() + 1 == 
     mRecyclerViewAdapter.getItemCount(); 
} 
+0

के बारे में हैंडलर –

0
boolean isScrollable() { 
    LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager(); 
    int itemCount = mRecyclerView.getAdapter().getItemCount(); 

    return !(itemCount == 0 || 
    (layoutManager.findFirstCompletelyVisibleItemPosition() == 0 && 
    layoutManager.findLastCompletelyVisibleItemPosition() == itemCount - 1)); 
} 
7

मैं एक आसान समाधान है कि स्थिति में आप सूची में हैं की परवाह किए बिना काम करता है पाया ।

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 

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


      boolean isRecylerScrollable = recyclerView.computeHorizontalScrollRange() > recyclerView.getWidth(); 

      if(isRecylerScrollable){ 
      //do something 
      } 
    }); 
} 
+0

यह स्वीकार्य उत्तर से वास्तव में बेहतर काम करता है! – Annihil

2

यह एक काम करता है:

public boolean isRecyclerScrollable() { 
    LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); 
    RecyclerView.Adapter adapter = recyclerView.getAdapter(); 
    if (layoutManager == null || adapter == null) return false; 

    return layoutManager.findLastCompletelyVisibleItemPosition() < adapter.getItemCount() - 1; 
} 
0

क्या

// 1 = down; -1 = up; 0 = up or down 
recyclerView.canScrollVertically(0) 
संबंधित मुद्दे