2017-10-16 5 views
1

J'ai un problème et je suis coincé à ce stade. J'ai utilisé le balayage de recyclaged sur chaque élément de recyclerview. Ce que je dois faire est de mettre à jour le textview avec 1, 2 et ainsi de suite pendant que le glissement bouge juste juste comme ceci. image of recyclerviewRecyclerVoir la mise à jour de l'article glisser l'arrière-plan textview

Je reçois la valeur x-axe avec event.getRaw (x) et j'ai besoin d'augmenter le montant que la valeur de x augmente de gauche à droite et de diminuer le nombre si le glissement se déplace de droite à la gauche. Voici mon code.

holder.swipeLayout.setOnTouchListener(new View.OnTouchListener() { 

      int downX, upX, initialX = 0, rightX; 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       switch (event.getAction()) { 

        case MotionEvent.ACTION_DOWN: 
         startX = event.getRawX(); 
         startY = event.getRawY(); 
         break; 

        case MotionEvent.ACTION_MOVE: 
         float x = event.getRawX(); 

         float y = event.getRawY(); 
         // Calculate move update. This will happen many times 
         // during the course of a single movement gesture. 

         scrollByX = x - startX; // move update x increment 
         scrollByY = y - startY; // move update y increment 

         startX = x; // reset initial values to latest 
         startY = y; 

         if (scrollByX >= 100 && scrollByX < 150) 
          holder.leftTextView.setText("1"); 
         if (scrollByX >= 150 && scrollByX < 200) 
          holder.leftTextView.setText("2"); 
         if (scrollByX >= 200 && scrollByX < 250) 
          holder.leftTextView.setText("3"); 
         if (scrollByX >= 250 && scrollByX < 300) 
          holder.leftTextView.setText("4"); 
         if (scrollByX >= 350 && scrollByX < 400) 
          holder.leftTextView.setText("5"); 

         break; 

        case MotionEvent.ACTION_UP: 
         upX = (int) event.getX(); 
         Log.i("event.getX()", " upX " + downX); 
         holder.swipeLayout.animateReset(); 
         //holder.leftTextView.setText("0"); 
         scrollByX = 0; 
         scrollByY = 0; 
         if (upX - downX > 100) { 

          // swipe right 
         } 

         else if (downX - upX > -100) { 

          // swipe left 
         } 
         break; 

       } 

       return false; 
      } 


     }); 

Chaque fois que je balaye ces éléments, parfois il montre 1 et parfois 5 signifie qu'il ne se comporte pas correctement. Quelqu'un peut-il m'aider s'il vous plaît à traverser cela. Merci.

Répondre

1

Essayez Mise à jour du textView dans l » case MotionEvent.ACTION_MOVE

+0

onTouchEvent() Oui je l'ai résolu. Merci beaucoup :) – AIK