【问题标题】:How to run an function in xml from viewmodel? Android, Kotlin, Databinding如何从viewmodel运行xml中的函数? Android、Kotlin、数据绑定
【发布时间】:2020-08-17 18:51:43
【问题描述】:

我正在尝试运行视图动画。当我在 TextInputEditText 中输入文本时,视图应该会消失,但出现错误:

"/app/build/generated/source/kapt/debug/.../MixerSimpleFragmentBindingImpl.java:1416: 错误:缺少返回语句}"。

BindingAdapters.kt

@BindingAdapter("textChangedListener")
fun onTextChanged(et: EditText, callback: () -> Unit) {
   et.addTextChangedListener(object : TextWatcher {
      override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
         callback.invoke()
      }

      override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
      override fun afterTextChanged(s: Editable) {}
    })
}

SimpleMixerViewModel.kt

class SimpleMixerViewModel : ViewModel() {
   val isVisible: MutableLiveData<Boolean> = MutableLiveData(false)
   ....

   fun click() {
        isVisible.value = true
    }

   fun typing(){
        isVisible.value = false
    }
}

mixer_simple_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools">
<data>
<variable name="simpleMixerViewModel" type="....SimpleMixerViewModel"/>
</data>
....
<com.google.android.material.textfield.TextInputEditText
      app:textChangedListener="@{()-> simpleMixerViewModel.typing()}"
      />

<com.google.android.material.button.MaterialButton
      android:onClick="@{() -> simpleMixerViewModel.click()}"
      />

<androidx.cardview.widget.CardView
    isVisible="@{simpleMixerViewModel.isVisible}">
</androidx.cardview.widget.CardView>
</layout>

有趣的 click() 作品。

有趣的打字()不起作用

【问题讨论】:

    标签: android kotlin data-binding


    【解决方案1】:

    您应该在 bindingAdapter 中使用接口而不是 kotlin lamda。

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 2019-04-27
      • 2016-06-19
      • 2015-09-05
      相关资源
      最近更新 更多