RX java / Android cómo lograr este brindis en cada clic usando el operador de rebote

Tengo este ImageView que onclick debería mostrar brindis y también hacer api onclick en la vista de la image, por lo que decidí usar el operador Debounce en Rx, pero ahora thost no está visible en cada clic. a continuación está el código

cartSubscriptionDecrement = RxView.clicks(holder.databinding .cartQuantityLayout.ivDecreaseQuantity) .debounce(1000, TimeUnit.MILLISECONDS) .subscribe { next -> cartQuantityEvent.onCartQuantityDecremented(cartSubscriptionDecrement!!) } 

Necesito mostrar brindis en cada clic de imageView.

Traté de tener un método onclick por separado para la Vista de image, pero durante la debugging encontré que el control nunca llega al método onclick, este es mi otro método onclick

¿Cómo puedo lograr este brindis en cada clic sin hacer una llamada de API en cada clic (hacer uso del operador de rebote).

Hay múltiples forms de hacer lo que estás preguntando. He incluido el más simple a continuación, pero tendré que pensar más acerca de los posibles efectos secundarios del uso de DoOnNext.

El código para este ejemplo vive en Github aquí si está interesado en ejecutar la aplicación. Me acabo de dar count de que el nombre del package es incorrecto, pero el ejemplo funcionará perfectamente.

El código más relevante para el ejemplo está debajo. La key es que tendrá que rebotar después de mostrar el Toast en lugar de antes.

 RxView.clicks(image1) .doOnNext(imageClickedEvent -> { // Show toast every time onNext is called (this will also log to LogCat) showToast(); }) .debounce(1000, TimeUnit.MILLISECONDS) .subscribe(clickEvent -> { makeApiCall(); }); 

Traté de tener un método onclick por separado para la Vista de image, pero durante la debugging encontré que el control nunca llega al método onclick, este es mi otro método onclick

Creo que este es el caso porque RxClicks establece un oyente en ImageView, y eso ocurre después de que el marco establece el oyente onClick y usted solo puede tener un OnClickListener en una View si lo recuerdo correctamente. Entonces, lo que está sucediendo es que RxView.clicks(imageView) está recibiendo el evento click en lugar del método que creó por separado.

Tienes que aplicar ".subscribeOn (AndroidSchedulers.mainThread ())" a todos los events de RxBinding, como "RxView.clicks ()"