Skip to content

Commit 0172fa0

Browse files
Add TabLayout#updateCustomTab(...)
1 parent 5888a1e commit 0172fa0

File tree

2 files changed

+8
-0
lines changed
  • viewbinding-ktx/src/main/java/com/dylanc/viewbinding
  • viewbinding-nonreflection-ktx/src/main/java/com/dylanc/viewbinding/nonreflection

2 files changed

+8
-0
lines changed

viewbinding-ktx/src/main/java/com/dylanc/viewbinding/TabLayout.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,16 @@ import androidx.viewbinding.ViewBinding
2323
import com.google.android.material.tabs.TabLayout
2424

2525
inline fun <reified VB : ViewBinding> TabLayout.Tab.setCustomView(block: VB.() -> Unit) {
26+
requireNotNull(parent) { "Tab not attached to a TabLayout" }
2627
inflateBinding<VB>(LayoutInflater.from(parent!!.context)).apply(block).let { binding ->
2728
customView = binding.root
2829
customView?.tag = binding
2930
}
3031
}
3132

33+
inline fun <reified VB : ViewBinding> TabLayout.updateCustomTab(index: Int, block: VB.() -> Unit) =
34+
getTabAt(index)?.customView?.getBinding<VB>()?.also(block)
35+
3236
inline fun <reified VB : ViewBinding> TabLayout.doOnCustomTabSelected(
3337
crossinline onTabUnselected: VB.(TabLayout.Tab) -> Unit = {},
3438
crossinline onTabReselected: VB.(TabLayout.Tab) -> Unit = {},

viewbinding-nonreflection-ktx/src/main/java/com/dylanc/viewbinding/nonreflection/TabLayout.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ import androidx.viewbinding.ViewBinding
2424
import com.google.android.material.tabs.TabLayout
2525

2626
fun <VB : ViewBinding> TabLayout.Tab.setCustomView(inflate: (LayoutInflater) -> VB, block: VB.() -> Unit) {
27+
requireNotNull(parent) { "Tab not attached to a TabLayout" }
2728
customView = inflate(LayoutInflater.from(parent!!.context)).apply(block).root
2829
}
2930

31+
fun <VB : ViewBinding> TabLayout.updateCustomTab(bind: (View) -> VB, index: Int, block: VB.() -> Unit) =
32+
getTabAt(index)?.customView?.getBinding(bind)?.also(block)
33+
3034
fun <VB : ViewBinding> TabLayout.doOnCustomTabSelected(
3135
bind: (View) -> VB,
3236
onTabUnselected: (VB.(TabLayout.Tab) -> Unit)? = null,

0 commit comments

Comments
 (0)