【发布时间】:2018-06-23 09:21:40
【问题描述】:
我正在阅读这篇博客文章Using Android Architecture Components with Firebase Realtime Database (Part 2) ,并且我正在实现最后一个代码 sn-p 及其工作。
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 类中执行此数据操作)并返回将数组转换为仅显示它的片段。
是否可以使用同一个 ViewModel 类来返回仅包含 LiveData 中的价格的数组(并且仍然返回包含在 LiveData 中的 HotStockViewModel 对象的数组)?
如果是,我该如何实现?我不想返回一个包含在 LiveData 中的 HotStockViewModel 对象数组,然后循环遍历它以获取片段中的价格。我根本不希望片段做任何数据操作,只显示数据。
我看到了这个 stackoverflow 问题Can an Android Architecture Components ViewModel compose an object from multiple LiveData returning models?,但我不明白答案。我还是 Java 初学者。
【问题讨论】:
标签: android firebase firebase-realtime-database android-architecture-components android-viewmodel