Skip to content

Commit 1608ae3

Browse files
Add a method of NavigationView#setHeaderView #20
1 parent a5d3145 commit 1608ae3

File tree

2 files changed

+10
-2
lines changed
  • viewbinding-ktx/src/main/java/com/dylanc/viewbinding
  • viewbinding-nonreflection-ktx/src/main/java/com/dylanc/viewbinding/nonreflection

2 files changed

+10
-2
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import androidx.lifecycle.Lifecycle
2929
import androidx.lifecycle.LifecycleObserver
3030
import androidx.lifecycle.OnLifecycleEvent
3131
import androidx.viewbinding.ViewBinding
32+
import com.google.android.material.navigation.NavigationView
3233
import com.google.android.material.tabs.TabLayout
3334
import kotlin.properties.ReadOnlyProperty
3435
import kotlin.reflect.KProperty
@@ -66,7 +67,10 @@ inline fun <reified VB : ViewBinding> TabLayout.Tab.bindCustomView(onBindView: V
6667
customView?.bind<VB>()?.run(onBindView)
6768

6869
inline fun <reified VB : ViewBinding> TabLayout.Tab.bindCustomView(bind: (View) -> VB, onBindView: VB.() -> Unit) =
69-
customView?.let { bind(it).run(onBindView) }
70+
customView?.let { bind(it) }?.run(onBindView)
71+
72+
inline fun <reified VB : ViewBinding> NavigationView.setHeaderView(index: Int = 0, onBindView: VB.() -> Unit) =
73+
getHeaderView(index)?.bind<VB>()?.run(onBindView)
7074

7175
inline fun <reified VB : ViewBinding> inflateBinding(layoutInflater: LayoutInflater) =
7276
VB::class.java.getMethod("inflate", LayoutInflater::class.java).invoke(null, layoutInflater) as VB

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import androidx.lifecycle.Lifecycle
2929
import androidx.lifecycle.LifecycleObserver
3030
import androidx.lifecycle.OnLifecycleEvent
3131
import androidx.viewbinding.ViewBinding
32+
import com.google.android.material.navigation.NavigationView
3233
import com.google.android.material.tabs.TabLayout
3334
import kotlin.properties.ReadOnlyProperty
3435
import kotlin.reflect.KProperty
@@ -65,7 +66,10 @@ fun <VB : ViewBinding> TabLayout.Tab.setCustomView(
6566
}
6667

6768
inline fun <reified VB : ViewBinding> TabLayout.Tab.bindCustomView(bind: (View) -> VB, onBindView: VB.() -> Unit) =
68-
customView?.let { bind(it).run(onBindView) }
69+
customView?.let { bind(it) }?.run(onBindView)
70+
71+
inline fun <reified VB : ViewBinding> NavigationView.setHeaderView(index: Int = 0, bind: (View) -> VB, onBindView: VB.() -> Unit) =
72+
getHeaderView(index)?.let { bind(it) }?.run(onBindView)
6973

7074
inline fun Fragment.doOnDestroyView(crossinline block: () -> Unit) =
7175
viewLifecycleOwner.lifecycle.addObserver(object : LifecycleObserver {

0 commit comments

Comments
 (0)