Android 选择在recyclerview row kotlin中按下的按钮

Android 选择在recyclerview row kotlin中按下的按钮,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我已经看过了这个问题的各种stackoverflow问题和答案,但仍然在努力找到正确的解决方案。如果有人有一个链接到我的问题与解决方案,我会标记为重复,但我还没有找到一个 注意:代码已升级到Kotlin,因此注意一些代码可能尚未针对Kotlin最佳实践进行优化 我已捕获了在我的RecyclerAdapter中按下的按钮,现在希望将其传递回具有recyclerView.addOnItemTouchListener的活动 我的RecyclerAdapter代码如下: override fun onB

我已经看过了这个问题的各种stackoverflow问题和答案,但仍然在努力找到正确的解决方案。如果有人有一个链接到我的问题与解决方案,我会标记为重复,但我还没有找到一个

注意:代码已升级到Kotlin,因此注意一些代码可能尚未针对Kotlin最佳实践进行优化

我已捕获了在我的
RecyclerAdapter
中按下的按钮,现在希望将其传递回具有
recyclerView.addOnItemTouchListener
的活动

我的
RecyclerAdapter
代码如下:

override fun onBindViewHolder(holder: NotesPicsRecyclerAdapter.RecyclerViewHolder, position: Int) {

    val data_provider = arrayList[position]

    holder.notePicShareButton.setOnClickListener {
        Toast.makeText(context, "Share Button", Toast.LENGTH_SHORT).show()
    }
    holder.notePicChangePicButton.setOnClickListener {
        Toast.makeText(context, "Edit Button", Toast.LENGTH_SHORT).show()
    }
    holder.notePicDeleteButton.setOnClickListener {
        Toast.makeText(context, "Delete Button", Toast.LENGTH_SHORT).show()
    }
    try {
        holder.imageText.text = data_provider.notes_text
        val imageFile = data_provider.image_path
        val inputStream = context.assets.open(imageFile)
        val d = Drawable.createFromStream(inputStream, null)
        holder.imagePath.setImageDrawable(d)
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

class RecyclerViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    internal var imagePath: ImageView
    internal var imageText: TextView
    internal var notePicShareButton: Button
    internal var notePicChangePicButton: Button
    internal var notePicDeleteButton: Button
    init {
        imagePath = view.findViewById<View>(R.id.single_note_pic_image) as ImageView
        imageText = view.findViewById<View>(R.id.single_note_pic_text) as TextView
        notePicShareButton = view.findViewById<View>(R.id.single_note_pic_share_button) as Button
        notePicChangePicButton = view.findViewById<View>(R.id.single_note_pic_change_pic_button) as Button
        notePicDeleteButton = view.findViewById<View>(R.id.single_note_pic_delete_button) as Button
    }
}
recyclerView.addOnItemTouchListener(
            MyRecyclerViewClickListener(this, object : MyRecyclerViewClickListener.OnItemClickListener {
                override fun onItemClick(view: View, position: Int) {
                      val thePos = arrayList[position].list_id
                      Toast.makeText(applicationContext, "This row: $thePos", Toast.LENGTH_SHORT).show()
                }
            })
    )

我的
RecyclerAdapter
Activity
中的所有
Toast
消息都起作用,因此我已捕获了正在按下的按钮以及正在选择的行,但我需要将按钮信息传递回我的
Activity
,以便我可以将其与按下的行一起使用。不知道如何继续挖掘,但如果您能提供任何信息,我们将不胜感激。

我想您可以这样做

活动中创建变量和该变量的设置器

private YourObject localVariable;

public YourObject setLocalVariable(YourObject localVariable){
   this.localVariable= localVariable;
}
然后单击
循环视图
列表
侦听器

Typecast
将您的
上下文
转换到您的
活动
中,并在那里设置您的局部变量

((YourActivity)context).setLocalVariable(arrayList[position])

您可以使用EventBus库,它将轻松实现您想要的功能


我不确定您的问题,但根据我对您的问题的理解,这将解决您的问题。您可以使用视图界面以及将通过视图和位置的项目视图界面,然后您可以使用此界面在您的活动中获取视图id。您所说的
我不清楚您在问什么捕获了正在按下的按钮以及正在选择的行
,然后再次说出要传递回我的活动的按钮信息,以便我可以将其用于按下的行
,即使在每个
侦听器中都有
视图
实例