Skip to content

Instantly share code, notes, and snippets.

@ademar111190
Last active June 12, 2019 20:12
Show Gist options
  • Save ademar111190/6880969f42710b2bcebadb2c8abc9839 to your computer and use it in GitHub Desktop.
Save ademar111190/6880969f42710b2bcebadb2c8abc9839 to your computer and use it in GitHub Desktop.
Step 2, finishing the ListenableBottomNavigationView
...
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener
class ListenableBottomNavigationView @JvmOverloads constructor(
...
) : BottomNavigationView(context, attrs, defStyleAttr), OnNavigationItemSelectedListener {
private val onNavigationItemSelectedListeners = mutableListOf<OnNavigationItemSelectedListener>()
init {
super.setOnNavigationItemSelectedListener(this)
}
override fun setOnNavigationItemSelectedListener(listener: OnNavigationItemSelectedListener?) {
if (listener != null) addOnNavigationItemSelectedListener(listener)
}
fun addOnNavigationItemSelectedListener(listener: OnNavigationItemSelectedListener) {
onNavigationItemSelectedListeners.add(listener)
}
fun addOnNavigationItemSelectedListener(listener: (Int) -> Unit) {
addOnNavigationItemSelectedListener(OnNavigationItemSelectedListener {
for (i in 0 until menu.size()) if (menu.getItem(i) == it) listener(i)
false
})
}
override fun onNavigationItemSelected(item: MenuItem) = onNavigationItemSelectedListeners
.map { it.onNavigationItemSelected(item) }
.fold(false) { acc, it -> acc || it }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment