BaseRecyclerViewAdapterHelper icon indicating copy to clipboard operation
BaseRecyclerViewAdapterHelper copied to clipboard

3.0.1版本和EasySwipeMenuLayout结合使用有问题

Open scsfwgy opened this issue 5 years ago • 7 comments

版本: api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.1' api 'com.github.anzaizai:EasySwipeMenuLayout:1.1.4'

在2.x版本是可以正常使用,升级到3.x后可侧滑;不可单击、子控件也不可能点击响应

scsfwgy avatar Mar 27 '20 08:03 scsfwgy

我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。

  • Adapter里在构造函数或init块里调用addChildClickViewIds()方法将需要被监听点击事件的viewId传入。
  • 删除原Adapter里的滑动菜单的点击事件处理。
  • 在视图业务处理层中使用Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。
  • 滑动菜单的根视图用当前视图的view.parent.parent就可取到。

cooppor avatar Apr 01 '20 17:04 cooppor

这种实现感觉怪怪的,还是希望作者可以解决这个问题 @cooppor

scsfwgy avatar Apr 07 '20 02:04 scsfwgy

我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。

  • Adapter里在构造函数或init块里调用addChildClickViewIds()方法将需要被监听点击事件的viewId传入。
  • 删除原Adapter里的滑动菜单的点击事件处理。
  • 在视图业务处理层中使用Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。
  • 滑动菜单的根视图用当前视图的view.parent.parent就可取到。

按照上述方式,子控件侧滑、删除都没有问题,但是item的点击事件无效...

scsfwgy avatar Apr 07 '20 04:04 scsfwgy

我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。

  • Adapter里在构造函数或init块里调用addChildClickViewIds()方法将需要被监听点击事件的viewId传入。
  • 删除原Adapter里的滑动菜单的点击事件处理。
  • 在视图业务处理层中使用Adapter.setOnItemChildClickListener方法来监听所有子视图的点击事件,具体视图用viewId来做判断。
  • 滑动菜单的根视图用当前视图的view.parent.parent就可取到。

baseAdapter 裏沒有addChildClickViewIds,請問你是用那個adapter 的?

darylsze avatar May 11 '20 01:05 darylsze

我也是遇到同样的问题。 仔细看了下示例代码,这个问题可以解决。

  • 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()
        }
    }
}

cooppor avatar Sep 28 '20 19:09 cooppor

最后还是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() }

hfyqsy avatar May 12 '21 06:05 hfyqsy

最后还是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吗?我点击任然没用

Linengyao avatar Jul 30 '22 08:07 Linengyao