Я изучаю вопрос о том, как правильно добавить событие onClick в мой просмотр,
В настоящее время я использую интерфейс внутри моего customAdapter
class CategoryAdapter(val categoryList : List<CategoryObject>, val context: Context, val mItemClickListener: MainInterface) : RecyclerView.Adapter<CategoryAdapter.ViewHolder>() {
interface MainInterface {
fun onCategoryItemClick(categoryKey: Int)
}
override fun getItemCount(): Int {
return categoryList.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(context).inflate(R.layout.listview_category, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder?.categoryName?.text = categoryList[position].categoryName
// holder?.categoryName.setOnClickListener{
// mItemClickListener.onCategoryItemClick(position)
// }
// holder?.categoryName?.setOnClickListener { listener(categoryList[position]) }
}
inner class ViewHolder (view: View) : RecyclerView.ViewHolder(view) {
val categoryName = view.lv_txt_category_name
init {
view.setOnClickListener {
mItemClickListener.onCategoryItemClick(adapterPosition)
}
}
}
}
onClick viewHolder не регистрируется в моей деятельности функция ovveride.
но размещение onClick внутри onBindViewHolder работает отлично,
Я не уверен, что более эффективно, если onBindViewHolder onClick - правильный ответ, тогда я буду придерживаться его, но если viewHolder правильный, почему он не работает должным образом?
Заранее спасибо!
Обновление
Это сообщение о потоке стека, которое я использую для исследования вещей
RecyclerView itemClickListener в Kotlin