Skip to content

Instantly share code, notes, and snippets.

@rommansabbir
Created January 4, 2022 10:35
Show Gist options
  • Save rommansabbir/f2faf0cbf8f08061915f77d21ef9c281 to your computer and use it in GitHub Desktop.
Save rommansabbir/f2faf0cbf8f08061915f77d21ef9c281 to your computer and use it in GitHub Desktop.
Android AdapterView Extension Functions
inline fun <T : Adapter> AdapterView<T>.registerForAdapterEventListener(
crossinline itemListener: (parent: AdapterView<*>, view: View, position: Int, id: Long) -> Unit,
) = doOnItemSelectedListener(itemListener, {})
inline fun <T : Adapter> AdapterView<T>.registerForAdapterEventListener(
crossinline itemListener: (parent: AdapterView<*>, view: View, position: Int, id: Long) -> Unit,
crossinline nothingListener: (parent: AdapterView<*>) -> Unit = {},
) = doOnItemSelectedListener(itemListener, nothingListener)
inline fun <T : Adapter> AdapterView<T>.doOnItemSelectedListener(
crossinline itemListener: (parent: AdapterView<*>, view: View, position: Int, id: Long) -> Unit,
crossinline nothingListener: (parent: AdapterView<*>) -> Unit,
): AdapterView.OnItemSelectedListener {
val listener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
itemListener.invoke(parent, view, position, id)
}
override fun onNothingSelected(parent: AdapterView<*>) {
nothingListener.invoke(parent)
}
}
this.onItemSelectedListener = listener
return listener
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment