Как определить события изменения Seekbar в Rx? - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу идентифицировать события изменения Seekbar, используя Rx android.Уловка в том, что я хочу идентифицировать все события внутри одной наблюдаемой, а не множественной наблюдаемой.Вот мой фрагмент кода, который содержит событие изменения прогресса.

 RxSeekBar.userChanges(setup_volume_limit_seekbar)
            .observeOn(AndroidSchedulers.mainThread())
            .skip(1)
            .subscribe {
                var value = it
                if (value == 0) {
                    value = 1
                }
                // More code here
            }

Все, что я хочу сделать, это прослушивать событие остановки, когда пользователь перестает перемещать палец по панели поиска.Заранее спасибо

1 Ответ

0 голосов
/ 24 сентября 2018

Итак, я нашел правильное решение.Можно перехватить все обратные вызовы поисковой панели внутри одной наблюдаемой.Ниже приведено решение

Kotlin

RxSeekBar.changeEvents(seekbar)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { seekBarChangeEvent ->
            when (seekBarChangeEvent) {
                is SeekBarProgressChangeEvent -> Log.d(TAG, "on Progress : " + seekBarChangeEvent.progress())
                is SeekBarStartChangeEvent -> Log.d(TAG, "on Start : ")
                is SeekBarStopChangeEvent -> Log.d(TAG, "on Stop : ")
            }
        }

Java

RxSeekBar.changeEvents(seekbar)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(seekBarChangeEvent -> {
            if (seekBarChangeEvent instanceof SeekBarProgressChangeEvent)
            {
                SeekBarProgressChangeEvent seekBarProgressChangeEvent = (SeekBarProgressChangeEvent) seekBarChangeEvent;
                Log.d(TAG, "on Progress : " + seekBarProgressChangeEvent.progress());
            }
            else if (seekBarChangeEvent instanceof SeekBarStartChangeEvent)
            {
                Log.d(TAG, "on Start : " );
            }
            if (seekBarChangeEvent instanceof SeekBarStopChangeEvent)
            {
                Log.d(TAG, "on Stop : " );
            }
        });
...