12

NestedScrollView'un sonunda bir EndlessRecyclerView sahibiyim. EndlessRecyclerView, kullanıcı geri dönüşümcünün alt kısmına kaydırdığında, daha fazla veri yükler. Bu zaten uygulanmış ve başka bir yerde çalışıyor, ancak NestedScrollView içinde geri dönüştürücüyü görüntülediğimde OnScrollListener olayları tetiklenmiyor.RecyclerView ScrollListener iç içe NestedScrollView

XML tasarımı:

<NestedScrollView> 

    <Other views/> 

    <EndlessRecyclerView/> 

</NestedScrollView > 

Kodu:

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

nasıl yukarıdaki durum için kaydırma olayı alabilirim?

Bu, birbirinin içinde iki kaydırılabilir görünüm olması iyi bir şey olmadığını biliyorum. Ancak, iki kaydırılabilir görünüm olmadan yukarıdaki durumu nasıl alabilirim?

Zaten bu bağlantıyı takip ama çalışmıyor: scroll event for recyclerview inside scrollview android

cevap

19

, sen burada

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 "NestedScrollView.OnScrollChangeListener" kullanabilirsiniz NestedScrollView altındadır rehabilitasyon makinesi görünümü için sonsuz kaydırma elde etmek sonsuz kaydırma işlemini gerçekleştireceğiniz geri dönüştürücü görünümünü size vermelidir. Ayrıca, scrollY > oldScrollY scrollY > oldScrollY, sayfanın aşağı kaydırıldığını doğrular.

Referans: NestedScrollView.OnScrollChangeListener

+0

Müthiş Adam ben harcamak bütün gün ciddiye iki satır bunu yapmak bunu çözmek için. Bu harika ... Ama şimdi görünen öğeleri nasıl alabilirim ve böylece sunucudaki yeni kayıtları alabilirim? –

+0

@RahulVats Yukarıdaki koşul, if koşul sağlandığında, kullanıcının tamamen aşağı kaydırdığı ve son öğenin görünür olduğu anlamına gelir. Diyelim ki 100 öğeniz var ve başlangıçta 20 öğe yüklendi. Yukarıdaki koşul karşılanırsa, sunucunuzdan bir sonraki veri kümesini (ör: 21-40) indirebilirsiniz. Her neyse, bu linki gerçek sorgunuza yönlendirebilirsiniz: https://stackoverflow.com/questions/40726438/android-detect-when-the-last-item-in-a-recyclerview-is-visible?noredirect=1&lq= 1 – Govind