为什么建议将onClickListener附加到ViewHolder?

时间:2019-07-10 19:08:06

标签: android performance android-recyclerview onclicklistener

我不明白为什么将监听器应用于持有人为什么有效。

我大部分时间都在看文章。这里关于stackoverflow的主题很好地涵盖了范围。 我发现的选择:

  • 附加到TextView-创建多个侦听器。
  • 附加到ViewHolder-再次创建多个侦听器,除非您创建一个侦听器,然后使用该侦听器附加它,您也可以使用TextView进行连接。
  • 附加onItemTouchListener-一种非常复杂的方法。

我没有看到仅仅是连接到适配器的简单工具View.OnClickListener。如果这样做,则生成一个public void onClick(View view),并为适配器提供RecyclerView的副本,然后将适配器(this)分配为您在{{1 }}。然后通过onCreateViewHolder RecyclerView函数访问该职位。查看代码段。

getChildAdapterPosition

对我来说,这个答案很简单,它的优点是单击侦听器上有一个线程,该线程全部在列表适配器中处理。

我想,我主要是想在一个封闭的话题上分享我的解决方案,但是我当然欢迎任何关于为什么这样做可能不会更好的建议。实际上,这是我在Android基础知识04.5 RecyclerView中对Challenge2的解决方案。

1 个答案:

答案 0 :(得分:0)

建议将onClickListener附加到视图持有者而不是适配器本身的主要原因是因为视图是用户单击Recyclerview中的项目时被单击的对象。

您所指的Holder是一个包含视图的类,并将单击侦听器应用于此持有人,使您可以区分实际单击的视图(位置/项目)。

这类似于解释为什么要将点击侦听器附加到布局中的按钮而不是整个布局本身的原因。当然,您可以将单击侦听器附加到整个布局,但是用户可能打算单击视图中与按钮相对的其他内容,并且您无法区分是单击了哪个按钮,因为clickListener不能帮助您确定哪个。