Я использую версию моментального снимка rxbindings, совместимую с rxjava2, и все работает отлично, но я не знаю, как обрабатывать события кликов внутри адаптера recyclerView. Я пытался использовать «rxjava 1 way», но это не сработало.
RxJava 1.0:
class RecyclerAdapter ... {
private final PublishSubject<Int> onClickSubject = PublishSubject.create();
Observable<Int> getItemClickSignal() {
return onClickSubject;
}
@Override
public void onBindViewHolder(EcommerceAdapter.ViewHolder holder, int position) {
RxView.clicks(holder.itemView)
.map(aVoid -> position)
.subscribe(mOnClickSubject);
}
}
и в деятельности:
class Activity ... {
mAdapter.getItemClickSignal()
.subscribe(new Subscriber<Int>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(int position) {
Log.d(TAG, position);
}
});
}
RxJava 2.0:
mAdapter.getItemClickSignal()
.subscribe(new Consumer<Integer>() {
@Override
public void accept(@NonNull Integer integer) throws Exception {
Log.d(TAG, position);
}
});
Тот же подход не работает с rxjava2 и не выдает никаких исключений, и я не мог понять, почему.