Передайте обратный вызов вашему адаптеру.
class ItemAdapter(private val listNames: MutableList<String>, private val onNameClicked: (String) -> Unit): RecyclerView.Adapter<CustomViewHolder>() {
//number of items
override fun getItemCount(): Int {
return listNames.size
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(p0.context)
val cellForRow = layoutInflater.inflate(R.layout.list_layout, p0, false )
return CustomViewHolder(cellForRow)
}
override fun onBindViewHolder(p0: CustomViewHolder, p1: Int) {
val listTitle = listNames.get(p1)
p0.view.listNamesView.text = listTitle
p0.view.setOnClickListener {
//do something
onNameClicked(listTitle)
notifyDataSetChanged()
}
}
}
В вашей основной деятельности,
listMain.adapter = ItemAdapter(listNames) { name ->
// Update your TextView or something
}
С другой стороны, я вижу, что список в вашем адаптере изменчив. Я бы предложил сделать его неизменным, так как изменение набора данных адаптера и отсутствие вызова notifyDataSetChanged()
подвержено ошибкам и не является хорошей практикой.