Если вам нужно запустить в действии какой-то код, который может выполнить перезагрузку / обновление / выборку / удаление и т. Д. С вашим пользовательским интерфейсом или данными, просто создайте и предоставьте специальный интерфейс.Ниже приведен пример.
class MyAdapter constructor(private val list: List<DataModel>, private val listener: UpdateActivityListener) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.adapter_item_title, parent, false))
}
override fun getItemCount(): Int = list.size
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemView.title.text = list[position].title
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
init {
// Example of listener for your actions inside item
view.setOnClickListener {
listener.eventFirst()
}
view.setOnLongClickListener {
listener.eventSecond(adapterPosition)
true
}
}
}
// Example of callbacks which activity wait
interface UpdateActivityListener {
fun eventFirst()
fun eventSecond(position: Int)
}
}
Также я вижу, что вы используете какую-то библиотеку, такую как FastAdapter, просто реорганизуйте код и установите для слушателя метод onBind
.Но лучше сделайте это на ViewHolder init.