Closed luyun181 closed 6 years ago
我不明白你为什么要把labelsView的选择事件设置写在item的点击事件回调里。 另外你的问题描述我不太明白。你是想让标签响应点击事件,还是不想让标签响应时间呢?能详细描述一下你的问题吗?
额。是这样的。我是想做标签的选择事件。现在是标签选择事件不响应。我应该是在adapter中暴露labelsview 的选择事件吧?
您应该是在adapter里给labelsView设置选择事件。然后如果你想把事件的回调暴露给activity,那你就在adapter定义个回调接口,把它回调给activity,就类似于给item的点击事件设置个回调一样的处理方式。
你上面的这种写法把labelsView的选择事件设置写在item的点击事件回调里,这肯定是不合理的。
对。 public interface OnItemOnLabelSelectChangeListener { onLabelSelectChange(TextView label, Object data, boolean isSelect, int position); } private OnItemOnLabelSelectChangeListener onItemClickListener; public void setOnItemOnLabelSelectChangeListener(OnItemOnLabelSelectChangeListener onItemClickListener) { this.onItemClickListener = onItemClickListener; }
这样写对吗
嗯 是的
谢谢了
在RecyclerView中使用。LabelsView的点击事件会被LabelsView 拦截。不会传递到LabelsView的子控件中。只有LabelsView的空白部分,才能传递到子控件上,这个该怎么处理呢?
goodsSpecAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { @Override public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { ToastUtils.showShort("xxxxx"); LabelsView labelsView = view.findViewById(R.id.label_view); labelsView.setOnLabelSelectChangeListener(new LabelsView.OnLabelSelectChangeListener() { @Override public void onLabelSelectChange(TextView label, Object data, boolean isSelect, int position) { ToastUtils.showShort(position+"=="); } }); } });