donkingliang / LabelsView

Android的标签列表控件。可以设置标签的选中效果。 可以设置标签的选中类型:不可选中、单选、限数量多选和不限数量多选等, 并支持设置必选项、单行显示、最大显示行数等功能。
Apache License 2.0
1.02k stars 157 forks source link

点击事件问题 #11

Closed luyun181 closed 6 years ago

luyun181 commented 6 years ago

在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+"=="); } }); } });

donkingliang commented 6 years ago

我不明白你为什么要把labelsView的选择事件设置写在item的点击事件回调里。 另外你的问题描述我不太明白。你是想让标签响应点击事件,还是不想让标签响应时间呢?能详细描述一下你的问题吗?

luyun181 commented 6 years ago

额。是这样的。我是想做标签的选择事件。现在是标签选择事件不响应。我应该是在adapter中暴露labelsview 的选择事件吧?

donkingliang commented 6 years ago

您应该是在adapter里给labelsView设置选择事件。然后如果你想把事件的回调暴露给activity,那你就在adapter定义个回调接口,把它回调给activity,就类似于给item的点击事件设置个回调一样的处理方式。

你上面的这种写法把labelsView的选择事件设置写在item的点击事件回调里,这肯定是不合理的。

luyun181 commented 6 years ago

对。 public interface OnItemOnLabelSelectChangeListener { onLabelSelectChange(TextView label, Object data, boolean isSelect, int position); } private OnItemOnLabelSelectChangeListener onItemClickListener; public void setOnItemOnLabelSelectChangeListener(OnItemOnLabelSelectChangeListener onItemClickListener) { this.onItemClickListener = onItemClickListener; }

这样写对吗

donkingliang commented 6 years ago

嗯 是的

luyun181 commented 6 years ago

谢谢了