【发布时间】:2019-08-24 15:01:56
【问题描述】:
我正在尝试在我的视图模型和 UI 中的一个对象的两个属性之间建立数据绑定。
该对象有两个属性name 和iconName,我可以通过视图模型中的Getter-/Setter-Methods 访问它们。
name 属性是一个简单的 String 字段,绑定到 EditText 组件。
但是,iconName 属性是位于 drawable 目录中的 XML 文件的资源名称,它应该被绑定为 ImageView 组件的源。
手动更改 ImageView 组件的来源就像调用一样简单:
int resId = getResources().getIdentifier(iconName, "drawable", getPackageName());
selectedIconView.setImageResource(resId);
在 Activity 类中。
但现在我不确定如何在 Binding Adapter 中提取资源 ID 以更新 ImageView,因为我的 Binding Adapter 中似乎没有 Context。
public class SubjectAdapter {
@BindingAdapter("app:subjectName")
public static void setSubjectName(EditText view, SubjectEntity subject) {
view.setText(subject.getName());
}
@BindingAdapter("app:srcCompat")
public static void setSubjectIcon(ImageView view, SubjectEntity subject) {
String iconName = subject.getIconName();
// TODO: Set Image Resource of view
}
}
【问题讨论】:
-
为什么不直接在你的对象中存储图标resourceId呢?
@DrawableRes private int iconResourceId在您的SubjectEntity类中和imageView.setImageResource(subject.getIconResourceId())在您的setSubjectIcon()方法中 -
我将这些实体存储在房间数据库中。添加/删除新可绘制对象时,存储资源 ID 可能会造成混淆 (stackoverflow.com/a/47797433/6920681)
标签: java android android-databinding