简体   繁体   English

如何在 recyclerView 中设置 OnclickListener 以进行另一个活动

[英]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.

相关问题 如何在RecyclerView上设置onClickListener? - How to set onClickListener on RecyclerView? 如何在Listview中设置OnClickListener以发送到另一个活动 - How to set OnClickListener in Listview to send to another activity 如何在Fragments中设置RecyclerView OnClickListener? - How to set RecyclerView OnClickListener in Fragments? 如何在进入另一个活动之前重置 recyclerView 项目? - How to reset recyclerView items befor going to another activity? 如何将Recyclerview的OnClickListener放入Activity - How to put Recyclerview's OnClickListener in Activity 如何在AsyncTask中的RecyclerView项上设置OnClickListener - How to set OnClickListener on RecyclerView items inside AsyncTask 如何在 Fragments 中设置 RecyclerView OnClickListener 和 OnLongClickListener? - How to set RecyclerView OnClickListener an OnLongClickListener in Fragments? 如何为recyclerview中动态添加的项目设置OnclickListener? - How to set OnclickListener for the dynamically added items in recyclerview? 如何在RecyclerView中为Button设置OnClickListener() - How to set OnClickListener() for Button inside RecyclerView 如何在MVVM结构中的RecyclerView项上设置OnClickListener - How to set OnClickListener on RecyclerView item in MVVM structure
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM