后台:我正在使用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
字段对应于两个EditText
。当用户输入时,Vales会反映在offline
模型中。
问题:当我滚过屏幕时EditText
值丢失。如果屏幕上一次显示四行,并且用户提供EditText
并滚动接下来的四行,如果重新访问前四行,则所有EditText
的值都将丢失。这是因为零拷贝设计而且我理解它。但是,如果我从@Ignore
中删除EditText
,则会抛出异常,表示您无法在外部执行交易....等等。
所需的输出如何避免EditText
的值在滚动时消失并利用领域零拷贝设计的好处。此外,将EditText
的值实时保存为用户类型或用户离开EditText
后的值。 真的可能吗?。我是否需要改变目前的做法?如果我从EditText
更改焦点时使用频繁的写入事务,是否会耗尽电池?
答案 0 :(得分:0)
如果您想利用Realms零拷贝架构,唯一的解决方案是保留您想要保存的所有数据,但目前不支持自动事务的双向数据绑定。
如果您将事务添加到数据绑定使用的所有setter,则可以使其工作。但是,根据您保存数据的频率,它仍然可能导致将jank引入您的UI。
这是我们正在考虑的问题,但我们无法在短期内提供任何解决方案。
我害怕,无论如何,没有任何&#34; easy&#34;选择。
注意,电池耗尽不是问题,但是你会非常频繁地写入磁盘。