我有一个单独的类来处理数据提取(特别是Firebase),我通常从它返回LiveData对象并异步更新它们.现在我想将返回的数据存储在ViewModel中,但问题是为了获得所述值,我需要观察从我的数据获取类返回的LiveData对象.observe方法需要一个LifecycleOwner对象作为第一个参数,但我显然没有在我的ViewModel内部,我知道我不应该保持对ViewModel内部的Activity/Fragment的引用.我该怎么办?
android android-livedata android-viewmodel android-architecture-components
我正在使用Retrofit,实时数据.我的项目有一种情况,我必须进行网络调用.如果任何一个失败,它应该返回错误.
目前我有两个实时数据观察员来完成工作,这不是一个好方法,所以我想知道更好的方法或示例代码来处理这样的要求.
注意:我没有使用Rxjava.
查看代码基本逻辑
String id = "items/1233"; //ID which has to to be deleted
if (isCustomizedItem) {
viewModel.deleteEvent(id);
} else {
viewModel.createCustomItems();
viewModel.deleteEvent(id);
}
Run Code Online (Sandbox Code Playgroud)
Livedata观察员
viewModel.getItemDeleted().observe(this, serverResponse -> {
if (serverResponse.status == Status.SUCCESS) {
Timber.i("Successfully deleted");
}
});
viewModel.itemCreated().observe(this, serverResponse -> {
if (serverResponse.status == Status.SUCCESS) {
Timber.i("new items added");
//Again call delete for specific item
viewModel.deleteEvent(id);
}
});
Run Code Online (Sandbox Code Playgroud)
Viewmodel代码
createItems = Transformations.switchMap(eventData, (data) -> {
if (canCreateItems(data)) {
return AbsentLiveData.create();
} else {
return eventItemRepository.createItems();
}
});
deleteItem …Run Code Online (Sandbox Code Playgroud)