android - LiveData 完成加载时触发代码?
问题描述
我有一个spinner
可供选择的项目和当前选择的项目LiveDatas
在我的ViewModel
. 我在开始活动之前知道当前选定的项目(它已传递到活动中),但可用项目是从数据库中获取的。我遇到的问题是当活动开始时(并且活动获得对 ViewModel 的引用),当前选定的项目被设置,并且在可以从数据库中获取所有项目之前完成。这导致我当前选择的项目在微调器中被覆盖。
微调器
<androidx.appcompat.widget.AppCompatSpinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:selectedValue="@={viewmodel.selectedItem}"
android:entries="@{viewmodel.itemsList}" />
视图模型
public class MyViewModel extends ViewModel
{
// Repository
private final Repository repository;
// LiveData
public LiveData<List<Item>> itemsList;
public MutableLiveData<Item> selectedItem = new MutableLiveData<>();
public MyViewModel(Repository repository)
{
this.repository = repository;
itemsList = repository.getItems();
}
public void setSelectedItem(Item item)
{
selectedItem.postValue(item);
}
}
有没有解决的办法?一个潜在的解决方案是稍后设置选定的项目,但这似乎有点骇人听闻,因为它是基于时间的。
解决方案
推荐阅读
- javascript - Bootstrap 选项卡面板标题和内容等高
- python - 在python中找到最大的非零矩阵
- tensorflow - 您如何在 sagemaker 培训工作中安装模块?
- julia - Julia @sprintf 宏似乎对“e”、“f”和“d”格式参数的工作方式不同
- java - 在java中省略父类属性
- google-sheets - 抓取并列出多个工作表/选项卡的 URL
- javascript - SailsJS - 无法加载静态文件
- swift - Cocoapod “pod spec lint” CompileSwift 返回了一个不成功的退出代码
- julia - 在 Julia 中运行最小均方函数
- java - 如何在某个光标位置移动窗口中的图形对象?