- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现 Mvvm 模型并尝试使用 MutableLiveData 来监听变化。
有两种方法
private MutableLiveData<List<Model>> modelsLiveData = new MutableLiveData<>();
public MainActivityViewModel() {
modelsLiveData = new MutableLiveData<>();
}
public MutableLiveData<List<Model>> getModelsLiveData() {
return modelsLiveData;
}
public void setModelsLiveData(final List<Model> modelsList) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Log.i("LIVE_DATA_TEST", Thread.currentThread().toString());
Thread.sleep(1000);
modelsLiveData.postValue(modelsList);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
ActivityMainBinding activityBinding = DataBindingUtil
.setContentView(this, R.layout.activity_main, new AppDataBindingComponent<>(this));
MainActivityViewModel viewModel = new MainActivityViewModel();
activityBinding.setViewModel(viewModel);
Log.i("LIVE_DATA_TEST", "onCreate: "+ Thread.currentThread());
List<Model> modelsList = new ArrayList<>();
modelsList.add(new Model("Suzuki Swift", 2761111));
modelsList.add(new Model("Renoult Megan", 3679060));
modelsList.add(new Model("Fiat Panda", 4638764));
modelsList.add(new Model("Fiat 500", 1234567));
modelsList.add(new Model("Toyota Land Crouser", 9876543));
viewModel.setModelsLiveData(modelsList);
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.matanmarciano.mvvmlivedata.viewmodels.MainActivityViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/models_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:items="@{viewModel.modelsLiveData}" />
</LinearLayout>
@BindingAdapter({"items"})
public void items(final RecyclerView recyclerView, List<Model> models) {
Log.i("LIVE_DATA_TEST", "Let's see if this method is reached" + models);
// TODO: update recyclerView adapter...
}
I/LIVE_DATA_TEST: onCreate: Thread[main,5,main]
I/LIVE_DATA_TEST: Thread[Thread-4,5,main]
I/LIVE_DATA_TEST: Let's see if this method is reached null // null I am getting here when using postValue.
最佳答案
您必须添加 setLifecycleOwner 才能从数据绑定(bind)订阅 liveData。
ActivityMainBinding activityBinding = DataBindingUtil
.setContentView(this, R.layout.activity_main, new AppDataBindingComponent<>(this));
activityBinding.setLifecycleOwner(this);
关于android - MutableLiveData 的 postValue 方法返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57330624/
我有以下用于搜索功能的 UI。 View (UI) > = Observer { users -> users?.let { updateUI(it) } ?: run { upda
我想知道如何从完成的 ASIHTTPRequest 中检索发布值。 当我执行请求时,我会这样做: [request setPostValue:uniqueID forKey:@"bookUniqueI
我正在实现 Mvvm 模型并尝试使用 MutableLiveData 来监听变化。 有两种方法 setValue() - 设置值。如果有活跃的观察者,值将被分派(dispatch)给他们。这个方法必须
As the document says about the Livedata#postValue(T) : If you called this method multiple times befo
MutableLiveData 的改变值有两种方式。但是 MutableLiveData 中的 setValue() 和 postValue() 有什么区别。 我找不到相同的文档。 这里是Androi
在OnCreate中执行 public void Start() { ModelSingleHotTrendingNews modelSingleHotTrendingNews
我尝试在我的应用程序上测试一些方法,但在调用 mutablelivedata.postValue 时出现错误。这是一个 fragment 和错误消息: @Test public void callSt
我正在尝试使用实时数据为 View 模型编写单元测试。 LoginViewModel.kt class LoginViewModel @Inject constructor( val cont
LiveData setValue 应该已经触发了 Activity 中的 onChanged 方法,但是它只在第一次调用,在我尝试进行分页之后,它中断并且不再调用 onChanged,尽管我的响应确
我是一名优秀的程序员,十分优秀!