2016-03-29 27 views
0

Bir CursorAdapter ve kendi özel RecyclerView.OnScrollListener eklenmiş bir RecyclerView var. Kullanıcı en üste kayar ve aşağı doğru çekilirken, tüm öğeler kaldırılır ve ağdan getirilen daha yeni olanlarla değiştirilir.RecyclerView kaydırma nasıl yeniden başlatılır

Alınan yeni öğe sayısı, ekrana sığacak kadar küçük olduğunda (taşmadığında), aşağı kaydırırken öğelerin bir sonraki sayfasını yüklemek için kullandığım özel onScrollListener'ım hiç aktif olmamıştı. Daha spesifik olarak, onKaydırma yöntemi hiçbir zaman çağrılmamaktadır, zira liste içinde aşağıya doğru kaydırma gerektiren yeterli video bulunmamaktadır.

RecyclerView üzerinde smoothScrollBy(0,0) çağrılması

  1. benim onScroll yöntem RecyclerView

üzerinde requestLayout() Ben onLoadFinished yapılan Hem çağrılar

  • denilen olması, bu denedim etrafında almak için imlecin yeni verilere sahip olmasından sonra eski ile birlikte Loader'ımdan.

    Herhangi bir fikrin var mı?

  • cevap

    0

    scrollListener ürününü kaldırmaya çalışın ve geri dönüştürücünüzün üst kısmındaki özel dokunma dinleyicisi ile bir görünüm ekleyinBu resmi görüntüleyin ve daha fazla veri almanız gerekip gerekmediğini kontrol edin.

    class MyTouchListener implements View.OnTouchListener { 
    
         boolean isFirstRowCompletelyVisible; 
    
         @Override 
         public boolean onTouch(View v, MotionEvent event) { 
          switch (event.getAction()) { 
    
           case MotionEvent.ACTION_DOWN://user put his finger on the screen. 
            isFirstRowCompletelyVisible = ((LinearLayoutManager) mRecyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition() == 0; 
            break; 
           case MotionEvent.ACTION_MOVE:// user move his finger on screen. 
            if (isFirstRowCompletelyVisible) { 
            //calculate movement and decide if you want to pull new data from your server. 
            } 
            break; 
           case MotionEvent.ACTION_UP: 
            isFirstRowCompletelyVisible = false; 
            break; 
          } 
          return false; 
         } 
        } 
    
    İlgili konular