android - 如何在 MVVM 中对动态膨胀的布局进行数据绑定
问题描述
我有一个可观察到的膨胀 3 种类型的布局
mEventActivityViewModel.getEventPhotos().observe(this, new Observer<List<EventPhotosDao.EventPhotos>>() {
@Override
public void onChanged(List<EventPhotosDao.EventPhotos> eventPhotos) {
int position = eventPhotos.size();
switch (position){
case 0:
initAddPhotosButton2();
break;
case 1:
inflateOnePhotoLayout();
break;
case 2:
inflateTwoPhotoLayout();
break;
default:
inflateThreePhotoLayout();
break;
}
});
我将如何在 MVVM 架构中对动态膨胀的布局进行数据绑定?我的所有逻辑都在我的 Activity 类中吗?
private void inflateOnePhotoLayout() {
View eventOnePhotosLayout = (View) LayoutInflater.from(this)
.inflate(R.layout.fragevent_photolayout_onephoto, mPhotosLayout, false);
ImageView imageView = (ImageView) eventOnePhotosLayout.findViewById(R.id.fragevent_onephotolayout_image1);
Glide.with(this).load(mEventPhotos.get(0).getBody()).apply(RequestOptions.centerCropTransform()).into(imageView);
mPhotosLayout.addView(eventOnePhotosLayout);
View eventNumPhotos_1 = (View) LayoutInflater.from(this)
.inflate(R.layout.vh_fragevent_numberpictures, mPhotosLayout, false);
TextView tvNumberPhotos = (TextView) eventNumPhotos_1.findViewById(R.id.vh_fragevent_tv_numberpictures);
tvNumberPhotos.setText("1");
mPhotosLayout.addView(eventNumPhotos_1);
}
解决方案
不幸的是,没有静态 XML 就无法进行绑定。您可以为要更新的每个视图设置一个LiveData
或一个。ObservableField
推荐阅读
- python - 从 shell 脚本中执行 python 代码
- javascript - 使用 this.$root.$emit 调用事件总线
- apache-spark - 类别级别作为列表传递的 StringIndexer
- r - 如何创建一个新列来指示某些其他列是否包含给定值?
- python - Or 工具的护士调度问题,在某些日子添加不同的轮班长度
- rust - Rust 中是否有一个有效的函数可以找到排序向量中第一次出现的值的索引?
- java - 获取自动完成预测 API 调用时出错:com.google.android.gms.common.api.ApiException: 9003: PLACES_API_ACCESS_NOT_CONFIGURED
- python - 使用 Scrapy 和 Splash 跟踪 javascript 分页
- ruby - 为什么 RSpec 测试放在 `module` 关键字中?
- javascript - 如何在不刷新页面的情况下立即在 React 中显示提交的数据?