Как написать Обработчик нажатия в RecyclerView-по нажатию переход на Activity?
Всем доброго времени суток! Я вывожу список RecyclerView ,мне нужно чтобы по нажатию на itemView открывалось Activity Помогите пожалуйста с кодом ,я не знаю как это написать ,некоторые говорят через интерфейс Андроид Котлин
class MyAdapter (listArray:ArrayList<Class1>,context: Context): RecyclerView.Adapter<MyAdapter.ViewHolder>() {
var listArrayR = listArray
var contextR = context
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView2=view.findViewById<TextView>(R.id.textView2)
fun bind (class1: Class1,context: Context)
{
textView2.text=class1.titleText
itemView.setOnClickListener(){
здеcь я выводил сообщение Toast
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from((contextR))
return ViewHolder(inflater.inflate(R.layout.oglavlenie,parent,false))
}
override fun getItemCount(): Int {
return listArrayR.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var listitem=listArrayR.get(position)
holder.bind(listitem,contextR)
}
public interface OnNoteListener{
fun onNoteClick( position: Int) {
}
}
}
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
Примерно так:
class MyAdapter (listArray:ArrayList<Class1>, clickListener: (Int) -> Unit): RecyclerView.Adapter<MyAdapter.ViewHolder>() {
var listArrayR = listArray
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView2=view.findViewById<TextView>(R.id.textView2)
fun bind (class1: Class1) {
textView2.text=class1.titleText
itemView.setOnClickListener() { clickListener(position) }
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
return ViewHolder(inflater.inflate(R.layout.oglavlenie,parent,false))
}
override fun getItemCount(): Int {
return listArrayR.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var listitem=listArrayR.get(position)
holder.bind(listitem)
}
}
Теперь там, где вы создаёте адаптер через конструктор напишите так:
val adapter = MyAdapter(data) { context.startActivity(Intent(context, ACTIVITY_CLASS_NAME_TO_LAUNCH::class.java)) }