每个 Recyclerview 项目都有不同的 onClick
Different onClick for each and every Recyclerview item
我正在 Recyclerview 的帮助下制作网格布局,我已经以编程方式在网格中添加了四个 Recyclerview 项目,现在我想在单击不同的项目时导航到不同的片段。我找不到合适的方法。
试试下面的代码
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.textViewName.text = seriesList[position].name
holder.textViewNameDesc.text = seriesList[position].desc
holder.textViewName.setOnClickListener {
Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show()
}
}
您需要在回收器适配器中添加以上代码
您应该在适配器的 onBindViewHolder 中使用 if 条件 class,如下所示:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.item.setOnClickListener {
when (position) {
0 -> {
//navigate to first fragment}
}
1 -> {
//navigate to second fragment}
}
2 -> {
//navigate to third fragment}
}
3 -> {
//navigate to fourth fragment}
}
}
}
}
override fun onBindViewHolder(holder: StPanelHomeViewHolder, position: Int) {
val item = dataset[position]
holder.cardViewNavigation[0].setOnClickListener {
val action =
StPanelHomeFragmentDirections.actionStPanelHomeFragmentToStPanelPayFeeFragment()
holder.view.findNavController().navigate(action)
}
}
我正在 Recyclerview 的帮助下制作网格布局,我已经以编程方式在网格中添加了四个 Recyclerview 项目,现在我想在单击不同的项目时导航到不同的片段。我找不到合适的方法。
试试下面的代码
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.textViewName.text = seriesList[position].name
holder.textViewNameDesc.text = seriesList[position].desc
holder.textViewName.setOnClickListener {
Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show()
}
}
您需要在回收器适配器中添加以上代码
您应该在适配器的 onBindViewHolder 中使用 if 条件 class,如下所示:
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.item.setOnClickListener {
when (position) {
0 -> {
//navigate to first fragment}
}
1 -> {
//navigate to second fragment}
}
2 -> {
//navigate to third fragment}
}
3 -> {
//navigate to fourth fragment}
}
}
}
}
override fun onBindViewHolder(holder: StPanelHomeViewHolder, position: Int) {
val item = dataset[position]
holder.cardViewNavigation[0].setOnClickListener {
val action =
StPanelHomeFragmentDirections.actionStPanelHomeFragmentToStPanelPayFeeFragment()
holder.view.findNavController().navigate(action)
}
}