2017-10-13 2 views
0

Bonjour Je travaille sur un projet Android et je dois détecter en faisant défiler la vue Recycler, je sais que vous pouvez ajouter OnscrollListener à RecyclerView à partir de Fragment ou Activity, mais je dois faire de l'adaptateur afin de transmettre des données à partir de là au fragment, son quelque chose en temps réel d'animation, voici ce que j'ai pour l'instant dans mon adaptateurTâche difficile - Détecter lors du défilement depuis RecyclerViewAdapter no Fragment ou activité

holder.linearLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 
      @Override 
      public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 

       Intent intent = new Intent("custom-message"); 
       intent.putExtra("address",shop.getAddress()); 
       LocalBroadcastManager.getInstance(v.getContext()).sendBroadcast(intent); 

      } 
     }); 

je l'AddonLayoutChangeListener mais il n `t travail i attends, je ne peux pas comprendre comment obtenir cela, espère que quelqu'un peut me aider

+0

addOnScrollListener est une fonction. Vous pouvez l'appeler depuis n'importe où vous avez une référence à la vue recycleur. –

+0

Bonjour mon adaptateur est une autre classe, comment puis-je implémenter OnscrollListener de cette classe d'adaptateur? –

+0

De la même manière que vous le faites ailleurs, vous déclarez qu'une classe l'implémente et met en œuvre toutes les fonctions de l'interface. –

Répondre

0

Je l'ai résolu l'ajout d'une méthode a Dapter

public Shop getItem(int position) { 
     Shop shop = shopsList.get(Integer.valueOf(position)); 
     return shop; 
    } 

puis de Fragment ajouter la

suivante
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { 
      @Override 
      public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
       super.onScrollStateChanged(recyclerView, newState); 
       if (recyclerView.getScrollState() == recyclerView.SCROLL_STATE_IDLE) 
       { 
        int postitionCentereitem = carouselaLyoutManager.getCenterItemPosition(); 
        Shop item = (Shop) mAdapter.getItem(postitionCentereitem); 
        int Id = item.getId(); 
        String Address = item.getAddress(); 
        lblMessage.setText(Address); 
       } 
      } 

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

Espérons que cela peut aider quelqu'un d'autre.