【问题标题】:Using two-way data binding with managed RealmObject in EditText在 EditText 中使用与托管 RealmObject 的双向数据绑定
【发布时间】:2017-06-30 08:27:29
【问题描述】:

背景:我正在使用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。当用户键入时,值会反映在offline 模型中。

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

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

【问题讨论】:

    标签: android android-edittext android-recyclerview realm realm-java


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢你,终于。除了电池消耗之外,我期待相同。这将是非常酷的功能。如果你能对stackoverflow.com/q/44842541/2870088的第2点)有所了解,那就太好了
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    相关资源
    最近更新 更多