3.0.1版本和EasySwipeMenuLayout结合使用有问题
版本: api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.1' api 'com.github.anzaizai:EasySwipeMenuLayout:1.1.4'
在2.x版本是可以正常使用,升级到3.x后可侧滑;不可单击、子控件也不可能点击响应
我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。
- Adapter里在构造函数或init块里调用
addChildClickViewIds()方法将需要被监听点击事件的viewId传入。 - 删除原Adapter里的滑动菜单的点击事件处理。
- 在视图业务处理层中使用
Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。 - 滑动菜单的根视图用当前视图的
view.parent.parent就可取到。
这种实现感觉怪怪的,还是希望作者可以解决这个问题 @cooppor
我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。
- Adapter里在构造函数或init块里调用
addChildClickViewIds()方法将需要被监听点击事件的viewId传入。- 删除原Adapter里的滑动菜单的点击事件处理。
- 在视图业务处理层中使用
Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。- 滑动菜单的根视图用当前视图的
view.parent.parent就可取到。
按照上述方式,子控件侧滑、删除都没有问题,但是item的点击事件无效...
我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。
- Adapter里在构造函数或init块里调用
addChildClickViewIds()方法将需要被监听点击事件的viewId传入。- 删除原Adapter里的滑动菜单的点击事件处理。
- 在视图业务处理层中使用
Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。- 滑动菜单的根视图用当前视图的
view.parent.parent就可取到。
baseAdapter 裏沒有addChildClickViewIds,請問你是用那個adapter 的?
我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。
- Adapter里在构造函数或init块里调用
addChildClickViewIds()方法将需要被监听点击事件的viewId传入。- 删除原Adapter里的滑动菜单的点击事件处理。
- 在视图业务处理层中使用
Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。- 滑动菜单的根视图用当前视图的
view.parent.parent就可取到。baseAdapter 裏沒有addChildClickViewIds,請問你是用那個adapter 的?
Adapter
class DemoAdapter : BaseQuickAdapter<Valve, BaseViewHolder>(R.layout.adapter_item) {
init {
// R.id.sb SwitchButoon,
// R.id.right_menu_del 侧滑菜单
addChildClickViewIds(R.id.sb, R.id.right_menu_del)
}
override fun convert(holder: BaseViewHolder, item: DemoDto) {
// ...
}
}
View
mQuickAdapter = DemoAdapter()
mQuickAdapter.setOnItemChildClickListener { adapter, view, position ->
when (view.id) {
R.id.sb -> {
val sb = view as SwitchButton
mQuickAdapter.data[position].side = if (sb.isChecked) "ON" else "OFF"
}
R.id.right_menu_del -> {
val dto = adapter.data[position] as DemoDto
// ...
val easySwipeMenuLayout = view.parent.parent as EasySwipeMenuLayout
easySwipeMenuLayout.resetStatus()
}
}
}
最后还是item的不同控件单独设置点击事件 holder.getView<RelativeLayout>(R.id.content).setOnClickListener { } holder.getView<RelativeLayout>(R.id.content).setOnLongClickListener { } holder.getView<TextView>(R.id.tv_delete).setOnClickListener { data.removeAt(holder.adapterPosition) notifyItemRemoved(holder.adapterPosition) val view: EasySwipeMenuLayout = holder.getView(R.id.easy_swipe) view.resetStatus() }
最后还是item的不同控件单独设置点击事件 holder.getView(R.id.content).setOnClickListener { } holder.getView(R.id.content).setOnLongClickListener { } holder.getView(R.id.tv_delete).setOnClickListener { data.removeAt(holder.adapterPosition) notifyItemRemoved(holder.adapterPosition) val view: EasySwipeMenuLayout = holder.getView(R.id.easy_swipe) view.resetStatus() }
请问这个是放在哪的,是convert吗?我点击任然没用