gpt4 book ai didi

android - 错误 : expecte when setting up binding adapters for two way data binding

转载 作者:行者123 更新时间:2023-12-04 15:32:05 27 4
gpt4 key购买 nike

我正在尝试为 TextInputEditText 设置两种方式绑定(bind)与 Float多变的。

这是我的 DataBindingAdapters 类的全部内容。

object DataBindingAdapters  {
@BindingAdapter("android:text")
@JvmStatic
fun setText(view: TextInputEditText, value: Float) {
if(value != view.text.toString().toFloat()) {
view.setText(value.toString())
}
}


@InverseBindingAdapter(attribute = "android:text")
fun getText(view: TextInputEditText): Float {

return view.text.toString().toFloat()
}

}

但我得到:
error: <identifier> expected
float callbackArg_0 = mBindingComponent.null.getText(inputFieldSize);

我错过了什么?

最佳答案

InverseBindingAdapter documentation 中所述,您又错过了一个绑定(bind)适配器。 :

@BindingAdapter(value = [ "android:textAttrChanged"], requireAll = false)
fun setTextWatcher( view: TextInputEditText, textAttrChanged: InverseBindingListener?) {
val newValue = object: TextWatcher {
override fun afterTextChanged(s: Editable?) = Unit

override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit

override fun onTextChanged( s:CharSequence, start:Int, before:Int, count:Int) {
textAttrChanged?.onChange()
}
}

val oldValue = ListenerUtil.trackListener(view, newValue, R.id.textWatcher)
if (oldValue != null) {
view.removeTextChangedListener(oldValue)
}
view.addTextChangedListener(newValue)
}

当您创建 @InverseBindingAdapter(attribute = "android:text") , 一个事件 android:textAttrChanged已创建,您必须为其添加绑定(bind)适配器。

调用 textAttrChanged?.onChange()将触发 InverseBindingAdapter你创造的。

编辑:

此外,您使用的是 Kotlin,因此您不需要将绑定(bind)适配器放在 object 中。 .一个单独的文件就足够了。只需去除包装 object DataBindingAdapters {..}@JvmStatic你应该没事。

关于android - 错误 : <identifier> expecte when setting up binding adapters for two way data binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61068455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com