我正在使用与 rxjava2 兼容的 rxbindings 快照版本,一切正常,但我不知道如何处理 recyclerView 适配器内的点击事件。我尝试使用“rxjava 1 方式”,但它不起作用。
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 也不会抛出任何异常,我不知道为什么。