diff --git a/adapt/src/main/java/io/github/vshnv/adapt/AdaptAdapter.kt b/adapt/src/main/java/io/github/vshnv/adapt/AdaptAdapter.kt index dce9039..3f49c15 100644 --- a/adapt/src/main/java/io/github/vshnv/adapt/AdaptAdapter.kt +++ b/adapt/src/main/java/io/github/vshnv/adapt/AdaptAdapter.kt @@ -31,9 +31,9 @@ class AdaptAdapter(private val viewTypeMapper: ((T, Int) -> Int)?, priv val binderItem: CollectingBindable = viewBinders[viewType] ?: defaultBinder ?: throw AssertionError("Adapt found ViewType with no bound view creator or any default view creator, Cannot proceed!") val viewSource = binderItem.creator() - return AdaptViewHolder(viewSource.view) { data -> + return AdaptViewHolder(viewSource.view) { position, data -> binderItem.bindView?.let { bind -> - bind(data, viewSource) + bind(position, data, viewSource) } } } @@ -44,7 +44,7 @@ class AdaptAdapter(private val viewTypeMapper: ((T, Int) -> Int)?, priv override fun onBindViewHolder(holder: AdaptViewHolder, position: Int) { val data = getItem(position) - holder.bind(data) + holder.bind(position, data) } private fun getItem(position: Int): T { @@ -62,6 +62,6 @@ class AdaptAdapter(private val viewTypeMapper: ((T, Int) -> Int)?, priv mDiffer.submitList(data, callback) } - class AdaptViewHolder(view: View, val bind: (T) -> Unit): RecyclerView.ViewHolder(view) + class AdaptViewHolder(view: View, val bind: (Int, T) -> Unit): RecyclerView.ViewHolder(view) } \ No newline at end of file diff --git a/adapt/src/main/java/io/github/vshnv/adapt/Bindable.kt b/adapt/src/main/java/io/github/vshnv/adapt/Bindable.kt index c5c3a55..f97cbc2 100644 --- a/adapt/src/main/java/io/github/vshnv/adapt/Bindable.kt +++ b/adapt/src/main/java/io/github/vshnv/adapt/Bindable.kt @@ -2,4 +2,5 @@ package io.github.vshnv.adapt interface Bindable { fun bind(bindView: (T, V) -> Unit) + fun bind(bindView: (Int, T, V) -> Unit) } \ No newline at end of file diff --git a/adapt/src/main/java/io/github/vshnv/adapt/CollectingBindable.kt b/adapt/src/main/java/io/github/vshnv/adapt/CollectingBindable.kt index 7e86504..6cc301b 100644 --- a/adapt/src/main/java/io/github/vshnv/adapt/CollectingBindable.kt +++ b/adapt/src/main/java/io/github/vshnv/adapt/CollectingBindable.kt @@ -4,11 +4,15 @@ import android.view.View import java.lang.RuntimeException class CollectingBindable(val creator: () -> ViewSource): Bindable { - var bindView: ((T, Any) -> Unit)? = null + var bindView: ((Int, T, Any) -> Unit)? = null private set override fun bind(bindView: (T, V) -> Unit) { - this.bindView = { a, b -> bindView(a, resolveSourceParam(b)) } + this.bindView = { _, a, b -> bindView(a, resolveSourceParam(b)) } + } + + override fun bind(bindView: (Int, T, V) -> Unit) { + this.bindView = { i, a, b -> bindView(i, a, resolveSourceParam(b)) } } private fun resolveSourceParam(item: Any): V { @@ -20,4 +24,6 @@ class CollectingBindable(val creator: () -> ViewSource): Bindable } } } + + } \ No newline at end of file