将LiveData绑定到CustomView

时间:2018-09-08 18:41:09

标签: android kotlin android-databinding android-livedata android-viewmodel

我在片段布局中有一个带有列表auf MutableLiveData<Data>的ViewModel,我用List中的数据元素之一设置了CustomView的数据变量。

这在第一次加载时效果很好,但是当我更改数据对象中的值时不会更新。

不太确定如何执行此操作,直到现在我才使用了双向数据绑定,例如EditText和MutableLiveData。

CustomView布局:

<data>
    <variable
        name="data"
        type="androidx.lifecycle.LiveData<Data>"/>
</data>

<androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:cardBackgroundColor="@{data.color}"
            app:cardCornerRadius="16dp">

班级:

var data: MutableLiveData<Data>? = null
    set(value) {
        binding.data = value
    }

片段布局:

<data>
    <variable
        name="viewModel"
        type=".ViewModel" />
</data>

<CustomView
        .
        .
        .
        app:data="@{viewModel.data[1]}" />

1 个答案:

答案 0 :(得分:0)

仅在第一次加载屏幕时才进行更新的原因是,使用XML来填充View,然后使用初始项并将其设置为CustomView。
然后,当列表中的项目更新时,它不会在CustomView中触发更新。

您可能正在寻找的是partial = partial + input_matrix [c][r] * sign_matrix [r][c];

karate-config.js

if(env == 'pre-prod')
{
     config.baseUrl='url1'
}

headers.js

function() {    
  var authheaders = {};
  switch(baseUrl){
      case 'url1':authheaders = { Authorization: 'auth-token'}
                  break;
                 }
                 return authheaders
                 }

然后以以下方式使用它:

@BindingAdapter

下面的链接可能是一个很好的演练:BindingAdapter


注意:该示例仅适用于布尔观察,但是可以将其更改为匹配观察到的任何对象。