LiveData Mvvm - 如何使用 LiveData 发送多个类型?我正在尝试发送对象以及适配器位置进行更新



我在MVVM中使用LiveData。在用Room更新数据库后,我正在尝试发回我插入Room数据库的Object,以及适配器位置。在我的ViewModel类中,方法是:

private MutableLiveData<String> insertItemLiveData = new MutableLiveData<>;
public void insertMenuItem(MenuItem menuItem, int adapterPositionToUpdate){
repo.insertOrder(menuItem.getId())
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<Integer>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onSuccess(@NonNull Integer integer) {
//The order is successfully inserted into database
//So I return back the name of the inserted order
String s = "Inserted Item: " + menuItem.getNameOfOrder();
insertItemLiveData.setValue(s);
}
@Override
public void onError(@NonNull Throwable e) {
errorLiveData.setValue("Failed to cancel order.");
}
});
}

在on-success方法中,它返回我想要显示的String,但我也想更新已更改的Recyclerview item的位置。处理这种情况的最佳方法是什么?

我可以使用一个包装类,并为String和适配器位置设置setter,但我觉得可能有更好的方法可以做到这一点。

资源包装器是一个好主意。MVVM资源包装器使用实时数据,您可以查看我的代码,了解如何使用它

最新更新