我有兴趣找出响应回收器视图的项目点击的最佳方式是什么。
通常,我会向 ViewHolder 添加一个 onclick() 侦听器,并通过接口将结果传回活动/片段。
我考虑过在 onBindViewHolder 中添加一个 Observable,但我不想为每个项目绑定创建一个新的 Observable。
您可以使用接收绑定 https://github.com/JakeWharton/RxBinding然后在适配器内部创建一个主题,然后将所有事件重定向到该主题,并创建主题的 getter 来充当可观察的对象,最后只需订阅该可观察的对象。
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;
}
一个用法示例可以是:
mMyAdapter.getViewClickedObservable()
.subscribe(view -> /* do the action. */);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)