小编Bej*_*liu的帖子

Kotlin 2 路绑定自定义视图

我有 1 个自定义视图,它扩展了 ConstraintLayout 并包含 1 个 EditText 和 2 个 TextViews

在我的自定义视图中,我定义了这个属性(和其他):

<attr name="Text" format="string" />
Run Code Online (Sandbox Code Playgroud)

我像这样使用它:

app:Text="@={login.email}"
Run Code Online (Sandbox Code Playgroud)

在我的自定义视图中,我定义了:

  companion object {
    @JvmStatic @BindingAdapter("Text")
    fun setText(nMe : View, nText: String) {
        nMe.nInput.setText(nText)
    }
    @InverseBindingAdapter(attribute = "Text")
    fun getText(nMe : View) : String {
      return  nMe.nInput.text.toString()
    }
Run Code Online (Sandbox Code Playgroud)

女巫在单向绑定中工作正常

app:Text="@{login.email}"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在 2 向绑定中使用它时,我得到错误指向 ActivityLoginBinding.java java.lang.String callbackArg_0 = mBindingComponent.null.getText(mEmail);

怎么做才能获得2路绑定?

LE:经过一些研究,我最终得到了这个:

@InverseBindingMethods(InverseBindingMethod(type = 
CustomInput::class,attribute = "bind:Text",event = 
"bind:textAttrChanged",method = "bind:getText"))
class CustomEditTextBinder {
companion object {
    @JvmStatic
    @BindingAdapter(value = ["textAttrChanged"])
    fun …
Run Code Online (Sandbox Code Playgroud)

data-binding binding kotlin

6
推荐指数
1
解决办法
1563
查看次数

标签 统计

binding ×1

data-binding ×1

kotlin ×1