J W*_*eld 13 android rx-java rx-android android-recyclerview
我有兴趣了解回应物品点击回收者视图的最佳方法是什么.
通常我会向ViewHolder添加一个onclick()侦听器,并通过接口将结果传回活动/片段.
我想在onBindViewHolder中添加一个Observable,但我不想为每个项目绑定创建一个新的Observable.
epo*_*ool 12
您可以使用RxBinding,然后在适配器内部创建一个主题,然后将所有事件重定向到该主题,只需创建一个主题的getter作为一个observable,最后只需订阅该observable即可.
private PublishSubject<View> mViewClickSubject = PublishSubject.create();
public Observable<View> getViewClickedObservable() {
return mViewClickSubject.asObservable();
}
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup pParent, int pViewType) {
Context context = pParent.getContext();
View view = (View) LayoutInflater.from(context).inflate(R.layout.your_item_layout, pParent, false);
ViewHolder viewHolder = new ViewHolder(view);
RxView.clicks(view)
.takeUntil(RxView.detaches(pParent))
.map(aVoid -> view)
.subscribe(mViewClickSubject);
return viewHolder;
}
Run Code Online (Sandbox Code Playgroud)
一个用法示例可能是:
mMyAdapter.getViewClickedObservable()
.subscribe(view -> /* do the action. */);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7277 次 |
| 最近记录: |