I use RecyclerView
adapter to display data inside an activity, I want to implement onClickListener
inside the activity, currently, I am setting
[BEST SOLUTION]
In my way, I just created a single instance of ClickListener
, And it dispatches click event to both RecyclerView
and Activity or Fragment:
class LeagueAdapter(onLeagueSelected: (League, Int, View) -> Unit) :
RecyclerView.Adapter() {
val dataSet = arrayListOf()
private val clickListener = View.OnClickListener {
it?.let {
val adapterPosition = it.tag as Int
onLeagueSelected(dataSet[adapterPosition], adapterPosition, it)
// perform adapter related action here ...
}
}
override fun getItemCount(): Int {
return dataSet.size
}
override fun onBindViewHolder(holder: LeagueHolder, position: Int) {
// put item position in tag field
holder.itemView.tag = position
holder.itemView.setOnClickListener(clickListener)
}
}
And inside Activity, we have something like this:
private val headerAdapter = LeagueAdapter { league, i, view ->
Log.e(TAG, "item clicked $i")
}