android - Android 与房间表模型的双向数据绑定
问题描述
所以我有用@Entity 注释注释的房间模型类,其中包含用@ColumnInfo 注释的字段。
我还有一个绑定到这个模型对象的视图:
<EditText
android:id="@+id/sadfadsdfasd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:hint="@string/assdsa"
android:inputType="text"
android:text="@={fuelPrice.modification}" />
像这样它在显示 EditText 时起作用。它显示了我的模型的价值,但是当我修改 EditText 时,即使我使用指示两种方式绑定的 @= 符号,该修改也不会存储在我的对象中。
因此,如果我理解正确,我不能真正将 POJO 与简单的原始字段一起用于双向数据绑定,而是应该将所有字段作为所需类型的可观察对象或包含在 LiveData 中的字段?
如果上述情况属实,这是否意味着要对房间实体进行两种方式绑定,我必须为每个实体创建单独的类,该类将实现所有可观察字段并相应地更新我的实体对象?还是有更简单的解决方案?
编辑 上述情况是错误的。似乎两种方式绑定确实适用于具有适当 getter 和 setter 的简单 POJO 类。
解决方案
AFAIK我刚刚测试过它,它应该在没有 ObservableField 的情况下工作,因为它modification
是一个带有标准 getter 和 setter 的私有字段。使用
android:text="@={fueldPrice.modification}"
和
class FuelPrice {
private String modification;
public String getModification() {
return modification;
}
public String setModification(String modification) {
this.modification = modification;
}
}
如果您只使用公共字段,它也可以工作
class FuelPrice {
public String modification;
}
推荐阅读
- laravel-5.7 - 如何从具有多个用户数据的数据库中仅获取特定用户的数据 laravel
- python - 使用 lower() 进行不区分大小写的字典检查
- automated-tests - Botium 部分 convos 实际上并没有将对话发送到聊天机器人
- python - 如何在 Python 中返回整个字符串并从中提取一列?
- regex - Firefox 给出 SyntaxError: invalid regexp group
- angular - Ionic 3 open modal 出现未在入口组件中声明但已存在的错误
- c# - 如何在 C# 中的 ListView 上运行 Linq 查询?
- sql-server-2012 - Cakephp 3 与 SQL Server 2012
- rust - 为什么这个迭代器在不直接作为函数参数调用时会丢弃?
- python-3.x - 如何计算 3 通道图像中的黑色像素图像?