Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
scsfwgy opened this issue Mar 27, 2020 · 7 comments
Closed

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

scsfwgy opened this issue Mar 27, 2020 · 7 comments

Comments

@scsfwgy
Copy link

scsfwgy commented Mar 27, 2020

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

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

@cooppor
Copy link

cooppor commented Apr 1, 2020

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

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

@scsfwgy
Copy link
Author

scsfwgy commented Apr 7, 2020

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

@scsfwgy
Copy link
Author

scsfwgy commented Apr 7, 2020

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

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

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

@darylsze
Copy link

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

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

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

@cooppor
Copy link

cooppor commented Sep 28, 2020

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

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

@hfyqsy
Copy link

hfyqsy commented May 12, 2021

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

@Linengyao
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants