2017-07-20 3 views
0

J'ai créé un RecyclerView avec «positions d'éléments d'échange» et «supprimer un élément avec un mouvement de balayage» comme expliqué here. Tout fonctionne bien, sauf pour une barre de recherche qui est contenue dans les articles. Je peux seulement ajuster la valeur de la barre de recherche en tapant sur un point mais sans changer la valeur en tapant sur le pouce déplaçable et en le déplaçant vers la gauche ou la droite. Ce qui se passe dans ces cas, c'est que le geste de balayage supprime l'élément du parent RecyclerView.Impossible de régler la valeur de la barre de recherche à l'aide de gestes de balayage dans RecyclerView

Comment puis-je modifier la valeur de la barre de recherche lorsqu'un mouvement de balayage survient et que je ne la supprime que lorsqu'un mouvement de balayage est effectué en dehors de la barre de recherche?

+0

sons comme le parent intercepte l'événement tactile. Vous pouvez lire à ce sujet ici: https://developer.android.com/training/gestures/viewgroup.html –

Répondre

0

@Ben P .: J'ai créé ma propre classe qui s'étend de LinearLayout, implémentée le onInterceptTouchEvent mais je n'ai pas pu interrompre le mouvement de balayage. Je suppose que parce que j'aurais dû intercepter la méthode RecyclerView, cependant, cette classe ne fournit pas une méthode onInterceptTouchEvent qui pourrait être surchargée.

Au lieu de cela, je résolu mon problème comme suit: J'ai deux types de vues que j'afficher dans la RecyclerView (défaut et modifier) et seul le type d'édition contient un SeekBar. Comme il est tout à fait correct de ne pas permettre de supprimer l'élément actuellement édité, j'ai distillé le type de ViewHolder dans la méthode getMovementFlags que je remplace de ItemTouchHelper.Callback().

(Désolé que je ne mentionnais pas le morceau d'information avec les deux types de vue.)