Skip to content

Commit 585600d

Browse files
Optimize SimpleListAdapter
1 parent d5c2c9d commit 585600d

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

viewbinding-base/src/main/java/com/dylanc/viewbinding/base/SimpleListAdapter.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,16 @@ abstract class SimpleListAdapter<T, VB : ViewBinding>(
5858
diffCallback: DiffUtil.ItemCallback<T>
5959
) : ListAdapter<T, SimpleListAdapter.BindingViewHolder<VB>>(diffCallback) {
6060

61-
private var onItemClickListener: ((T, Int) -> Unit)? = null
62-
private var onItemLongClickListener: ((T, Int) -> Unit)? = null
61+
private var onItemClickListener: OnItemClickListener<T>? = null
62+
private var onItemLongClickListener: OnItemClickListener<T>? = null
6363

6464
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingViewHolder<VB> =
6565
BindingViewHolder(ViewBindingUtil.inflateWithGeneric<VB>(this, parent)).apply {
6666
itemView.setOnClickListener {
67-
onItemClickListener?.invoke(getItem(adapterPosition), adapterPosition)
67+
onItemClickListener?.onItemClick(getItem(adapterPosition), adapterPosition)
6868
}
6969
itemView.setOnLongClickListener {
70-
onItemLongClickListener?.invoke(getItem(adapterPosition), adapterPosition)
70+
onItemLongClickListener?.onItemClick(getItem(adapterPosition), adapterPosition)
7171
onItemLongClickListener != null
7272
}
7373
}
@@ -76,17 +76,21 @@ abstract class SimpleListAdapter<T, VB : ViewBinding>(
7676
onBindViewHolder(holder.binding, getItem(position), position)
7777
}
7878

79-
fun doOnItemClick(block: (T, Int) -> Unit) {
79+
fun doOnItemClick(block: OnItemClickListener<T>) {
8080
onItemClickListener = block
8181
}
8282

83-
fun doOnItemLongClick(block: (T, Int) -> Unit) {
83+
fun doOnItemLongClick(block: OnItemClickListener<T>) {
8484
onItemLongClickListener = block
8585
}
8686

8787
abstract fun onBindViewHolder(binding: VB, item: T, position: Int)
8888

8989
class BindingViewHolder<VB : ViewBinding>(val binding: VB) : RecyclerView.ViewHolder(binding.root)
90+
91+
interface OnItemClickListener<T> {
92+
fun onItemClick(item: T, position: Int)
93+
}
9094
}
9195

9296
abstract class SimpleIntListAdapter<VB : ViewBinding> : SimpleListAdapter<Int, VB>(IntDiffCallback())

0 commit comments

Comments
 (0)