[英]How to set OnclickListener in recyclerView for going another activity
**Hello everyone. **大家好。 I am new in android development.我是 android 开发的新手。 I am using room database and I set data in recyclerView.我正在使用房间数据库,并在 recyclerView 中设置数据。 Now I am trying to Do when I click any recyclerview item then I need to go another activity.Anyone Please help me.现在,当我单击任何 recyclerview 项目时,我正在尝试做,然后我需要 go 另一个活动。任何人请帮助我。 ** **
MainActivity RecyclerView Adding code MainActivity RecyclerView 添加代码
private fun setUpListOfDataIntoRecyclerView(registerList:ArrayList<registerEntity>,
registerDao: registerDao){
if(registerList.isNotEmpty()){
var itemAdapter = MainAdapter(registerList)
binding?.rvHappyPlaceList?.layoutManager = LinearLayoutManager(this)
binding?.rvHappyPlaceList?.adapter = itemAdapter
binding?.rvHappyPlaceList?.visibility = View.VISIBLE
binding?.noRecordText?.visibility = View.GONE
}else{
binding?.rvHappyPlaceList?.visibility = View.GONE
binding?.noRecordText?.visibility = View.VISIBLE
}
}
MainAdapter主适配器
class MainAdapter(val items: ArrayList<registerEntity>):
RecyclerView.Adapter<MainAdapter.MainHolder>() {
//step 2
private var onClickListener: AdapterView.OnItemClickListener? = null
inner class MainHolder(var binding: ItemHappyPlaceBinding): RecyclerView.
ViewHolder(binding.root) {
val llTitle = binding.tvTitle
val llDescription = binding.tvDescription
var llImage = binding.ivPlaceImage
}
fun setOnClickListener(onClickListener: View.OnContextClickListener){
this.onClickListener = onClickListener
}
override fun onBindViewHolder(holder: MainHolder, position: Int) {
val item = items[position]
holder.llTitle.text = item.title
holder.llDescription.text = item.description
holder.llImage.setImageURI(Uri.parse(item.image))
}
I recommend you replace:我建议您更换:
private var onClickListener: AdapterView.OnItemClickListener? = null
with this:有了这个:
var onItemClick: (() -> Unit)? = null
You can also delete the fun setOnClickListener(..){}您还可以删除有趣的 setOnClickListener(..){}
And add in your MainHolder the binding.root.setOnClickListener{} like:并在您的 MainHolder 中添加 binding.root.setOnClickListener{},例如:
inner class MainHolder(var binding: ItemHappyPlaceBinding): RecyclerView.ViewHolder(binding.root) {
init {
binding.root.setOnClickListener {
onItemClick?.invoke()
}
}
val llTitle = binding.tvTitle
val llDescription = binding.tvDescription
var llImage = binding.ivPlaceImage
}
Or if you prefer u can also add the onItemClick?.invoke() in the onBindViewHolder like:或者,如果您愿意,您也可以在 onBindViewHolder 中添加 onItemClick?.invoke(),例如:
holder.itemView.setOnClickListener {
onItemClick?.invoke()
}
And then in your activity, in fun setUpListOfDataIntoRecyclerView add:然后在您的活动中,在有趣的 setUpListOfDataIntoRecyclerView 中添加:
var itemAdapter = MainAdapter(registerList)
itemAdapter.onItemClick = this::goToActivity()
And also add the goToActivity fun like:并添加 goToActivity 乐趣,例如:
fun goToActivity(){
// launch the activity
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.