gpt4 book ai didi

android - 如何使一个 ViewModel 类将多种数据类型返回给 Activity 或 fragment

转载 作者:行者123 更新时间:2023-11-29 16:40:13 26 4
gpt4 key购买 nike

我正在阅读这篇博文 Using Android Architecture Components with Firebase Realtime Database (Part 2) 我正在实现最后一个代码 fragment 及其工作原理。

private final FirebaseQueryLiveData liveData = new FirebaseQueryLiveData(HOT_STOCK_REF);
private final MediatorLiveData<HotStock> hotStockLiveData = new MediatorLiveData<>();

public HotStockViewModel() {
// Set up the MediatorLiveData to convert DataSnapshot objects into HotStock objects
hotStockLiveData.addSource(liveData, new Observer<DataSnapshot>() {
@Override
public void onChanged(@Nullable final DataSnapshot dataSnapshot) {
if (dataSnapshot != null) {
new Thread(new Runnable() {
@Override
public void run() {
hotStockLiveData.postValue(dataSnapshot.getValue(HotStock.class));
}
}).start();
} else {
hotStockLiveData.setValue(null);
}
}
});
}

我实际上是用它来返回一个包含在 LiveData 中的 HotStockViewModel 对象数组(通过遍历数据库的结果,我真的不知道我是否应该在 ViewModel 类中进行这种数据操作)并返回数组到只显示它的 fragment 。

是否可以使用相同的 ViewModel 类返回仅包含在 LiveData 中的价格的数组(并且仍然返回包含在 LiveData 中的 HotStockViewModel 对象的数组)?

如果是,我该如何实现?我不想返回包含在 LiveData 中的 HotStockViewModel 对象数组,然后循环遍历它以获取 fragment 中的价格。我根本不希望 fragment 进行任何数据操作,只显示数据。

我看到了这个 stackoverflow 问题 Can an Android Architecture Components ViewModel compose an object from multiple LiveData returning models?但我不明白答案。我还是一个 Java 初学者。

最佳答案

and I really don't know if I should be doing this data manipulation in a ViewModel class

在我认为您正在使用的 Android MVVM 模式中,不建议在 Viewmodel 类中执行数据操作。而是创建一个应该处理这个的 repo 类。 viewModel 类应该只从 repo 类获取数据,然后将其传递给需要它的任何 UI 组件。

关于android - 如何使一个 ViewModel 类将多种数据类型返回给 Activity 或 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50999751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com