在 EditText 中使用与托管 RealmObject 的双向数据绑定
Using two-way data binding with managed RealmObject in EditText
背景: 我正在使用 io.realm:android-adapters:2.0.0
来显示项目列表。每行包含三个 TextViews
和两个 EditText
字段。这三个 TextViews
文本是根据 realm
架构设置的。我正在为 EditText
使用两种方式的数据绑定,例如:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:text="@={Conversion.toString(offline.inputUI)}" />
此 offline
是使用两个 @Ignore
字段扩展 RealmObject
的模式,这两个 @Ignore
字段对应于两个 EditText
。当用户键入时,Vales 反映在 offline
模型中。
问题: 当我滚动屏幕时 EditText
值丢失。如果屏幕上一次显示四行并且用户输入 EditText
并滚动到接下来的四行,如果重新访问前四行,所有 EditText
的值都将丢失。这是因为零拷贝设计,我理解。但是,如果我从 EditText
中删除 @Ignore
,则会抛出一个异常,您无法在外部执行事务……等
期望的输出如何避免EditText
的值在滚动时消失并利用领域零复制设计 .此外,在用户输入时或在用户离开 EditText
后实时将 EditText
的值保存在领域中。 真的可以吗? .我需要改变我目前的做法吗?如果我在焦点从 EditText
更改时频繁使用写入事务,它会耗尽电池吗?
如果你想利用 Realms 零拷贝架构,唯一的解决办法是持久化你想要保存的所有数据,但是现在不自动支持自动事务的双向数据绑定。
如果您将事务添加到数据绑定使用的所有设置器,您就可以让它工作。但根据您保存数据的频率,它仍然可能导致您的 UI.
出现卡顿
这是我们正在思考的问题,但短期内我们无法提供任何解决方案。
恐怕,无论如何,都没有"easy"选择。
请注意,电池耗尽不是问题,但您会非常频繁地写入磁盘。
背景: 我正在使用 io.realm:android-adapters:2.0.0
来显示项目列表。每行包含三个 TextViews
和两个 EditText
字段。这三个 TextViews
文本是根据 realm
架构设置的。我正在为 EditText
使用两种方式的数据绑定,例如:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:text="@={Conversion.toString(offline.inputUI)}" />
此 offline
是使用两个 @Ignore
字段扩展 RealmObject
的模式,这两个 @Ignore
字段对应于两个 EditText
。当用户键入时,Vales 反映在 offline
模型中。
问题: 当我滚动屏幕时 EditText
值丢失。如果屏幕上一次显示四行并且用户输入 EditText
并滚动到接下来的四行,如果重新访问前四行,所有 EditText
的值都将丢失。这是因为零拷贝设计,我理解。但是,如果我从 EditText
中删除 @Ignore
,则会抛出一个异常,您无法在外部执行事务……等
期望的输出如何避免EditText
的值在滚动时消失并利用领域零复制设计 .此外,在用户输入时或在用户离开 EditText
后实时将 EditText
的值保存在领域中。 真的可以吗? .我需要改变我目前的做法吗?如果我在焦点从 EditText
更改时频繁使用写入事务,它会耗尽电池吗?
如果你想利用 Realms 零拷贝架构,唯一的解决办法是持久化你想要保存的所有数据,但是现在不自动支持自动事务的双向数据绑定。
如果您将事务添加到数据绑定使用的所有设置器,您就可以让它工作。但根据您保存数据的频率,它仍然可能导致您的 UI.
出现卡顿这是我们正在思考的问题,但短期内我们无法提供任何解决方案。
恐怕,无论如何,都没有"easy"选择。
请注意,电池耗尽不是问题,但您会非常频繁地写入磁盘。