Я рассмотрел различные вопросы и ответы на эту проблему в стеке и все еще пытаюсь найти правильное решение. Если у кого-то есть ссылка на мою проблему с решением, я отмечу ее как дубликат, но я еще не нашел ее.
Примечание. Код был обновлен до 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
}
}
Мой onCreate в моем фрагменте кода активности выглядит следующим образом:
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()
}
})
)
Все сообщения Toast
в моих RecyclerAdapter
и Activity
работают, поэтому я зафиксировал, какая кнопка нажимается, а какая строка выбрана, но мне нужно, чтобы информация о кнопке была передана обратно на мой Activity
так что я могу использовать его со строкой, которая была нажата. Не уверен, как продолжить и все еще копать, но любая информация будет оценена.