RxAndroid и события кнопок?

Кто-нибудь знает, как получить щелчок от нажатия кнопки с помощью RxAndroid?

НЕТ, это НЕ дубликат. Слишком многое изменилось.

Я старался:

  • Events.click() ... был удален
  • RxTextView.editorActions()... предполагается, что он работает, потому что TextView является суперклассом Button... не получает от него никаких событий
  • ViewObservable.clicks() .... был удален или перемещен в RxBindings (предположительно, но я не смог найти его там!)

Мои зависимости Gradle:

compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
compile 'com.jakewharton.rxbinding:rxbinding:0.2.0'

Идеи кто-нибудь?


person Richard    schedule 01.10.2015    source источник


Ответы (2)


Начиная с версии 0.3.0 вам необходимо использовать RxView.clicks(). Вот пример, который регистрирует клик.

 RxView.clicks(button).subscribe(new Action1<Void>() {
            @Override
            public void call(Void aVoid) {
                // Replace below with your click handling code
                Log.d(TAG, "Clicked");
            }
        });
person iagreen    schedule 02.10.2015
comment
RxView.clickEvents были удалены 22.10.2015 — журнал изменений: github.com/JakeWharton/ RxBinding/blob/master/CHANGELOG.md - person AgentKnopf; 30.11.2015
comment
Дополнительное примечание: если представление актуально по какой-то причине, например, при добавлении прослушивателя onClick в recycleradapter, тогда все, что нужно сделать, это определить действие с помощью new Action1‹View›()... вызываемый метод будет затем прочитайте публичный недействительный вызов (представление просмотра) {...} - person AgentKnopf; 30.11.2015

Кроме того, если вы хотите улучшить событие, чтобы избежать нескольких кликов, вы можете использовать:

@BindView(R.id.my_button)
Button myButton;

RxView.clicks(myButton)
      .throttleFirst(1, TimeUnit.SECONDS, AndroidSchedulers.mainThread())
      .subscribe(s -> {
            // Do anything when I do click  
            Log.d(TAG, "Clicked");
      });
person yaircarreno    schedule 01.11.2017