[英]Cannot find the setter for attribute 'android:text' - Android MVVM
[英]Cannot find the setter for attribute 'android:text'
我有:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View" />
<variable name="vm" type="com.my.package.viewmodel.SplashActivityVM" />
</data>
<android.support.v7.widget.LinearLayoutCompat
bla...>
<TextView
bla...
android:text='@{vm.status}'
bla... />
bla...
與activity.java:
@Override
protected void onCreate(Bundle savedInstanceState) { bla... }
private void observeStatus(SplashActivityVM viewModel) {
viewModel.getStatus().observe(this, status -> {
if (status != null) {
mBinding.setVm(viewModel);
} else { }
mBinding.executePendingBindings();
});
}
和我的ViewModel:
public class SplashActivityVM extends AndroidViewModel implements ViewModel {
private final MutableLiveData<SplashState> mObservableStatus = new MutableLiveData<>();
public MutableLiveData<SplashState> getStatus() { return mObservableStatus; }
public SplashActivityVM(@NonNull Application application) { super(application); }
// bla...
我收到以下錯誤:
msg:在android.widget.TextView上找不到參數類型為android.arch.lifecycle.MutableLiveData的屬性“ android:text”的設置器。
怎么了?
您需要為SplashState自定義綁定適配器
TextViewAdapters.kt
@BindingAdapter("android:text")
fun setText(view: TextView, state: SplashState) {
view.text = state.toString()
}
@Override
protected void onCreate(Bundle savedInstanceState) { bla...
mBinding.setLifecycleOwner(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) { bla...
mBinding.setLifecycleOwner(this);
mBinding.setvm(viewModel);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.