android - android 应用程序中活动和多片段的单视图模型
问题描述
我有一个 TravelActivity 活动,一些片段的 ui 层次结构是:
-旅行
--travelActivity(活动)
--addTravel(片段)
--旅行清单(片段)
--存档旅行(片段)
ETC'
我希望如果add travel fragment
添加单个旅行项目然后list fragment
更新
我的问题:
- 最佳实践是什么,我不知道是否为每个片段创建特定的视图模型或为所有片段和活动使用相同的视图模型
- 如果相同的视图模型如何与多个片段共享单个视图模型
谢谢!
这是我的视图模型:
public class TravelViewModel extends AndroidViewModel {
ITravelRepository repository;
private FirebaseAuth mAuth = FirebaseAuth.getInstance();
public User getCurrentUser() {
FirebaseUser currentUser = mAuth.getCurrentUser();
.....
}
private MutableLiveData<List<Travel>> mutableLiveData = new MutableLiveData<>();
public TravelViewModel(Application p) {
super(p);
repository = TravelRepository.getInstance();
ITravelRepository.NotifyToTravelListListener notifyToTravelListListener = new ITravelRepository.NotifyToTravelListListener() {
@Override
public void onTravelsChanged() {
List<Travel> travelList = repository.getAllTravels();
mutableLiveData.setValue(travelList);
}
};
repository.setNotifyToTravelListListener(notifyToTravelListListener);
}
void addTravel(Travel travel)
{
repository.addTravel(travel);
}
public void updateTravel(Travel travel)
{
repository.updateTravel(travel);
}
MutableLiveData<List<Travel>> getAllTravels()
{
return mutableLiveData;
}
MutableLiveData<Boolean> getIsSuccess()
{
return repository.getIsSuccess();
}
}
解决方案
推荐阅读
- node.js - 带有 Express、Jest 和 SuperTest 的 Node.js 永远不会失败
- python - 如何从 Stack Exchange API 获取大量数据?
- javascript - javascript:如何创建一个接收任意数量参数并根据数量取平均值的函数。论据?
- mysql - 使用大型 WHERE IN 和 Date 子句优化查询
- php - 通过终端错误在 Digital Ocean Ubuntu 中更新 Composer
- c# - C# BouncyCastle PKCS#8
- azure-functions - 如何防止对 Azure Function 脚本 (.csx) 进行代码更改
- python - 无法将 STR 更改为 FLOAT 以从 Excel 求和
- html - 使用 gcloud 部署的网页出现 404 错误?
- ruby-on-rails - 无法使用 rails 6 actiontext 渲染 youtube 嵌入 iframe