Android onClick on RecyclerView.ViewHolder不工作
我关注的是谷歌官方代码实验室()上出现的神社示例应用程序 我想创建一个简单的视图(片段和其他片段一样),在单击时显示任何项目的详细文本 我认为实现onClick-on元素的最佳方法是在Android onClick on RecyclerView.ViewHolder不工作,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我关注的是谷歌官方代码实验室()上出现的神社示例应用程序 我想创建一个简单的视图(片段和其他片段一样),在单击时显示任何项目的详细文本 我认为实现onClick-on元素的最佳方法是在StaggeredProductCardViewHolder类中,因为它实现了RecyclerView.ViewHolder(itemView) 这是我已经尝试过的,但我甚至不能在屏幕上的任何地方点击任何项目,所以出了什么问题 class StaggeredProductCardViewHolder(itemVie
StaggeredProductCardViewHolder
类中,因为它实现了RecyclerView.ViewHolder(itemView)
这是我已经尝试过的,但我甚至不能在屏幕上的任何地方点击任何项目,所以出了什么问题
class StaggeredProductCardViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
var productImage: NetworkImageView = itemView.findViewById(R.id.product_image)
var productTitle: TextView = itemView.findViewById(R.id.product_title)
var productPrice: TextView = itemView.findViewById(R.id.product_price)
override fun onClick(v: View?) {
println("wow clicked")
v?.context?.startActivity(Intent(v.context, ProductCardDetailActivity::class.java))
}
class ProductCardDetailActivity : Fragment(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
println("onCreate")
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
println("onCreateView")
return super.onCreateView(inflater, container, savedInstanceState)
}
}
}
注意:我添加了一个片段ProductCardDetailActivity
,其中我将实现其他方法,以在单击时显示项目片段描述
我真的不知道从哪里开始,从哪里开始,否则我会在这方面付出更多努力,但同时我会继续尝试。您只是在实现View.OnClickListener接口。 它与处理单击无关。 您应该为视图持有者的视图附加此文件
class StaggeredProductCardViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
var productImage: NetworkImageView = itemView.findViewById(R.id.product_image)
var productTitle: TextView = itemView.findViewById(R.id.product_title)
var productPrice: TextView = itemView.findViewById(R.id.product_price)
init{
itemView.setOnClickListener(this)
}
override fun onClick(v: View?) {
println("wow clicked")
v?.context?.startActivity(Intent(v.context, ProductCardDetailActivity::class.java))
}
class ProductCardDetailActivity : Fragment(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
println("onCreate")
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
println("onCreateView")
return super.onCreateView(inflater, container, savedInstanceState)
}
}
}适配器代码在哪里?请在此处添加适配器代码,以便我们看到问题。您覆盖了onClick事件,但尚未编写setOnClickListener来实际调用该事件。至少不在这里。我明白了,我正在像后贝娄一样尝试一下。它有意义吗?您需要设置一个侦听器来接收单击事件,以便
视图可以将事件传递给该侦听器。通过实现View.OnClickListener
并重写onClick
,您已经使您的类成为了一个合适的侦听器—现在您只需将其传递给视图即可使用:)是的,是的,我看到我没有将侦听器附加到对象,该对象在单击时会以某种方式表现,并且实现在onClick中。泰