12

के अंदर स्क्रॉल लिस्टनर देखें NestedScrollView के अंत में मेरे पास EndlessRecyclerView है। EndlessRecyclerView का अर्थ है: जब उपयोगकर्ता रीसाइक्लर के निचले भाग तक स्क्रॉल करता है तो देखें कि यह अधिक डेटा लोड करता है। यह पहले ही लागू हो चुका है और कहीं और काम कर रहा है, लेकिन जब मैंने रीसाइक्लिंग व्यू NestedScrollViewOnScrollListener घटनाओं में आग नहीं लगाई है।रीसाइक्लर देखें NestedScrollView

एक्सएमएल डिजाइन:

<NestedScrollView> 

    <Other views/> 

    <EndlessRecyclerView/> 

</NestedScrollView > 

कोड:

recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      // This is never fired! Here is where I implement the logic of EndlessRecyclerView 
     } 
    }); 

मैं ऊपर मामले के लिए स्क्रॉल घटना कैसे मिलता है?

मुझे पता है कि एक दूसरे के अंदर दो स्क्रॉल करने योग्य विचारों के लिए अच्छा नहीं है। लेकिन, मेरे पास दो स्क्रॉल करने योग्य विचार किए बिना उपर्युक्त मामला कैसे है?

मैं पहले से ही इस लिंक का पालन किया है, लेकिन यह काम नहीं करता है: scroll event for recyclerview inside scrollview android

उत्तर

19

recycler दृश्य NestedScrollView किया जा रहा है जो, आप उपयोग कर सकते हैं "NestedScrollView.OnScrollChangeListener"

nestedScrollView.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> { 
      if(v.getChildAt(v.getChildCount() - 1) != null) { 
       if ((scrollY >= (v.getChildAt(v.getChildCount() - 1).getMeasuredHeight() - v.getMeasuredHeight())) && 
         scrollY > oldScrollY) { 
         //code to fetch more data for endless scrolling 
       } 
      } 
     }); 

यहाँ v.getChildCount() -1 के लिए अंतहीन स्क्रॉल प्राप्त करने के लिए आपको रीसाइक्लिंग दृश्य देना चाहिए जिसके लिए आप अंतहीन स्क्रॉलिंग लागू कर रहे हैं।

भी scrollY > oldScrollY पुष्टि करता है कि पृष्ठ नीचे स्क्रॉल किया जा रहा है।

संदर्भ: NestedScrollView.OnScrollChangeListener

+0

बहुत बढ़िया आदमी मैं खर्च पूरे दिन गंभीरता से इसे सुलझाने के लिए आप दो पंक्तियों में यह कर सकते हैं। यह बढ़िया है ... लेकिन अब मैं दृश्यमान वस्तुओं और सभी को कैसे प्राप्त कर सकता हूं ताकि मैं सर्वर पर नए रिकॉर्ड ला सकूं? –

+0

@RahulVats उपरोक्त कोड में जब स्थिति समाप्त हो जाती है, तो इसका मतलब है कि उपयोगकर्ता पूरी तरह से नीचे स्क्रॉल हो गया है और अंतिम आइटम दिखाई दे रहा है। मान लें कि आपके पास 100 आइटम हैं और शुरुआत में 20 आइटम लोड हो गए हैं। यदि उपर्युक्त स्थिति पूरी हो जाती है, तो आप अपने सर्वर से डेटा के अगले सेट (उदा: 21-40) डाउनलोड कर सकते हैं। वैसे भी, आप इस लिंक को अपनी वास्तविक क्वेरी के लिए देख सकते हैं: https://stackoverflow.com/questions/40726438/android-detect-when-the-last-item-in-a-recyclerview-is-visible?noredirect=1&lq= 1 – Govind

संबंधित मुद्दे