0

背景: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是扩展RealmObject了两个@Ignore对应于两个字段的模式EditTextoffline当用户键入时,值会反映在模型中。

问题:当我滚动过去时,屏幕EditText值会丢失。如果在屏幕上一次可见四行,并且用户输入EditText并滚动接下来的四行,并且如果重新访问前四行,则所有值都EditText将丢失。这是因为零拷贝设计而发生的,我理解这一点。@Ignore但是,如果我从中删除,EditText则会引发一个异常,即您无法在......等之外执行事务。

期望的输出如何避免EditText滚动时消失的值并利用领域零副本设计。此外,EditText在用户键入时或在用户离开后实时保存 in realm的值EditText真的有可能吗?. 我是否需要改变我目前的方法。如果我在焦点从 更改时使用频繁的写入事务EditText,它会耗尽电池吗?

4

1 回答 1

0

如果您想利用 Realms 零拷贝架构,唯一的解决方案是持久保存您想要保存的所有数据,但目前不自动支持自动事务的 2 路数据绑定。

如果您将事务添加到数据绑定使用的所有设置器,则可以使其工作。但是根据您保存数据的频率,它仍然可能导致在您的 UI 中引入 jank。

这是我们正在考虑的问题,但我们将无法在短期内提供任何解决方案。

恐怕,无论如何,没有任何“简单”的选择。

请注意,电池消耗不是问题,而是您将非常频繁地写入磁盘。

于 2017-07-03T07:54:15.387 回答