Android DataBinding / BindingAdapter Error: An error is thrown: error: missing return statement when passing a function to BindingAdapter (block: () -> Unit).
BindingAdapter.kt
@BindingAdapter("click")
fun LottieAnimationView.click(block: () -> Unit) {
setOnClickListener {
block()
}
}
activity_main.xml
<data>
<variable
name="viewModel"
type="com.veldan.ViewModel" />
</data>
<View
android:id="@+id/view"
click="@{() -> viewModel.viewFun()}"
android:layout_width="0dp"
android:layout_height="0dp" />
<View
android:id="@+id/view"
click="@{() -> viewModel.viewFun()}"
android:layout_width="0dp"
android:layout_height="0dp" />
ViewModel.kt
class ViewModel() {
viewFun(){
// logic
}
}
SOLUTION 1:
Use Field syntax
| click = "@{ () -> viewModel.viewFun() }"
| click = "@{ viewModel.viewFun }"
SOLUTION 2:
Use Lambda
| ViewModel.kt
Lambda - works well when block with parameters.
| block with parameters