实时数据和双向数据绑定:未调用自定义设置器

2024-03-25

我使用 2 路数据绑定来更新 ViewModel 中的 LiveData String 对象,并使用 EditText 中设置的字符串:

<android.support.design.widget.TextInputEditText
  android:id="@+id/writeReviewTitle"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@={viewModel.liveReviewTitle}"
/>

所以,根据我的理解,ViewModel会有它的liveReviewTitle每次 EditText 中的文本更改时,属性都会更新。我认为这是通过使用 TextWatcher 或图书馆为我处理的某种监听机制来实现的。我还以为当文本需要更新时,它会有它的setter叫。事实似乎并非如此!当文本更改时,我需要在 ViewModel 中执行更多操作,因此我实现了一个自定义setter for liveReviewTitle, 但它是没有被叫到(我尝试过调试)。 这就是它在中的样子ViewModel class:

var liveReviewTitle: MutableLiveData<String> = MutableLiveData()
        set(value) {
            field = value
            customLogicHere()
        }

尝试调试这个setter但它似乎从未被调用过!这里发生了什么?感觉有点混乱。文本正在更新,并保存在ViewModel,这只是setter那不叫。


当然它永远不会被调用,您不是在设置一个新的 MutableLiveData,而是在 MutableLiveData 中设置一个新的 String 值(可能使用setValue).

但是,如果您直接公开 MediatorLiveData 而不是 MutableLiveData,则应该能够拦截正在设置的值并在设置值后执行自定义逻辑。

EDIT:以下应该按预期工作:

val liveReviewTitle: MutableLiveData<String> = MutableLiveData()
private val mediator = MediatorLiveData<String>().apply {
    addSource(liveReviewTitle) { value ->
        setValue(value)
        customLogicHere()
    }
}.also { it.observeForever { /* empty */ } }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实时数据和双向数据绑定:未调用自定义设置器 的相关文章

  • Android 的 GCM 推送通知[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 我尝试学习 GCM 并制作一个测试应用程序 该应用程序将通过 androids 官方网站获取 an
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • Android 视图展开动画

    我正在尝试编辑这些来源 https github com gabrielemariotti androiddev tree master AnimationTest创建一个适用于我所有视图的简单函数 Override public void
  • Android ACTION_DATE_CHANGED 广播

    我有 Nexus S 当我在手机上手动更改日期时 ACTION DATE CHANGED 并不总是被广播 如果我将日期从 2014 年 2 月 13 日更改为 2014 年 2 月 14 日 我还没有获得 ACTION DATE CHANG
  • 当应用程序停止使用 Sencha Touch 2.2 和 Phonegap 时,LocalStorage 存储不会保留在 Android 手机上

    这在我的浏览器中工作正常 但是当我在手机上安装该应用程序并使用它时 它看起来很好 直到我强制它停止并重新打开该应用程序 然后我的所有记录都消失了 我正在使用 2 2 和 Phonegap 任何帮助将非常感激 这是我的商店 Ext defin
  • 使用 ArrayAdapter 的 ListView 中的按钮

    我有一个使用 POJO 类填充的 ArrayAdapter 列表视图由 2 个布局组成 1 代表菜单项 1 代表类别 带分隔符的列表视图很好 后来我尝试在每个菜单项行中添加一个按钮来编辑其中的详细信息 当我尝试获取单击按钮的行的位置时 我遇
  • 可以混淆/加密 SharedPreferences 文件吗?

    因此 我对混淆应用程序的 SharedPreferences xml 文件很感兴趣 就像 Android LVL 混淆其许可证 cahce 数据一样 这是可以想象的吗 大量的谷歌挖掘几乎没有产生任何可能解决我的问题的结果 我当然不是密码学家
  • Android 中的 XmlPullParser 陷入困境

    经过多个小时的搜索和调试后 我仍然停留在同一个地方 并且 Eclipse 没有帮助我 我试图解析这个 RSS 提要 http fr espnf1 com rss motorsport story feeds 0 xml type 2 这很简
  • 在android中以编程方式创建布局 - 问题

    我正在使用以下代码动态创建 FrameLayout mylayout java FrameLayout layout new FrameLayout this FrameLayout LayoutParams layoutparams ne
  • GSON:自定义对象反序列化

    好吧 我编辑了这个问题 因为它不够清楚 Edit 2 更新了 JSON 文件 我在 Android 应用程序中使用 GSON 我需要解析来自服务器的 JSON 文件 而且有点太复杂了 我不想让我的对象结构太重 所以我想简化内容 所以我的对象
  • 如何在android中的应用程序小部件中找到哪个按钮被点击?

    我想设计一个简单的应用程序小部件 它有两个文本视图和两个用于上一个 下一个的按钮 我很难处理应用程序小部件中的按钮单击 实际上我的愿望是 如果用户单击上一个按钮 我想显示以前的值 如果用户单击下一个按钮 我想显示数据库中的下一个值 如何知道
  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • 在 android studio 上单击推送通知后重定向到特定活动

    我正在努力开发一个 Android 应用程序 以便在单击所有传入的推送通知时将应用程序重定向到特定的活动页面 我是 Android 开发新手 对我的编程感到抱歉 下面是推送通知部分的 android manifest xml 如果对此主题有
  • Android 如何从我的应用程序使用 SD 卡中的文件路径预览图像

    文件存在于sdcard image jpg我想创建我自己的应用程序 活动 按下按钮时 需要使用内置图像查看器显示存储在 SD 卡中的图像 按图像查看器中的后退按钮后 它应该返回到我正在运行的应用程序 需要一些帮助 您可以为此创建一个具有适当
  • 我可以在导航组件中使用多个 NavHostFragment 吗?

    如果您难以理解以下段落 请查看我制作的流程图 我目前正在制作一个带有 3 个顶级目的地的笔记应用程序 顶级目标之一 NotesList 显示用户创建的注释列表 NotesList 有一个过滤器按钮 可显示带有 FilterMenu 目标的底
  • 日志记录在 Android 设备上实际上有什么作用?

    我一直在 Android 示例中看到这样的代码 try catch Exception e Log e Error e getMessage 什么是Log e实际上在物理设备上做什么 它进入系统日志 开发人员可以通过 SDK 工具访问该日志
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • 随着速度变化,速度表针规绕其中心旋转

    Hi all 我编写了一个应用程序 其中有一个速度计 其指针垂直设置为 90 度 我试图以每秒变化的速度绕其中心旋转指针 我在文本视图中显示变化的速度 从 0 到 120 随机 我正在从远程服务获取速度并显示在文本视图中 因此 当速度发生变
  • 同时有两个操作栏(底部和向上)?

    我需要制作两个操作栏 顺便说一下我正在使用actionBarSherlock 所以我真正需要的是在正常操作栏上放置一个 欢迎屏幕 开关 并添加两个正常的 ActionBar 操作选项 与我需要的类似的是 Gmail 和地图 如下所示 htt

随机推荐

  • 为什么oracle区分大小写?

    Oracle 默认区分大小写 而 SQL Server 和 MySQL 等其他数据库默认不区分大小写 这是否有原因 我知道有一些方法可以启用 禁用区分大小写 但 Oracle 与其他数据库不同似乎很奇怪 我还试图了解区分大小写的原因 我可以
  • 如何在 RichFaces/JSF 页面中嵌入和调用 javascript 脚本

    我一直在寻找一种在 JSF 页面中嵌入和调用 javascript 函数的方法 我也在使用 RichFaces 为了定义该函数 我似乎可以以跨浏览器支持的方式执行此操作
  • 模板参数中的自引用模板

    我该怎么做才能使这项工作成功 template
  • 使用 OpenCV 捕获 H264 流

    所以 一段时间以来 我一直在尝试让我的 Raspberry Pi 2 使用 OpenCV 从我的 Logitech C920 捕获 H264 流 我一直在互联网上搜寻信息 但没有运气 简短的系统描述 Raspberry Pi 2 运行 Ra
  • 透明背景上的 CoreText 字体平滑

    我尝试在 半 透明背景上使用 CoreText appkit 版本 进行渲染 结果边缘不平滑 在网上搜索表明这个问题没有解决方案 但是我不相信它 因为一个简单的观察 如果我创建一个包含相同字符串的 CATextLayer 那么字体是可爱和平
  • git全局配置问题

    不知何故 我的全局 git msysgit 设置user name and user email 天知道还有什么 被设置为最近前同事的详细信息 当我尝试改变它们时 我得到了could not commit to u gitconfig 如果
  • 将 SpringCloudSleuth 与 AWS X-Ray 集成

    我有一个使用 Springboot 应用程序运行 Fargate 实例的 ECS 集群 并且希望以最少的代码更改来启用跟踪 我开始研究两种方法 使用 AWS Xray 步骤 gt 添加依赖项 添加 WSXRayServletFilter 在
  • 删除numpy数组中的行

    我有一个可能如下所示的数组 ANOVAInputMatrixValuesArray 0 96488889 0 73641667 0 67521429 0 592875 0 53172222 0 78008333 0 5938125 0 48
  • 追求纯 CSS 布局有商业原因吗?

    似乎每次我尝试创建纯 CSS 布局时 都会比使用一两个表格花费更长的时间 让三列具有不同数量的数据的相同长度似乎需要特殊的技巧 特别是在处理跨浏览器问题时 我的问题 这几张桌子会伤害谁 表格似乎在表格数据上特别有效 为什么它们在当今时代如此
  • 为什么 C# 中函数 isprefix 比 Startswith 快?

    有谁知道为什么 C NET 的以 开始 http msdn microsoft com en us library system string startswith aspx函数比IsPrefix http msdn microsoft c
  • Perl:现实生活中的字符串长度限制

    同时 例如 perldata http perldoc perl org perldata html文档表明 Perl 中的标量字符串仅受可用内存的限制 我强烈怀疑在现实生活中还会有一些其他限制 我正在考虑以下想法 我不确定 Perl 中如
  • 尽管服务器回复积极,但 Rails 渲染未在浏览器中显示

    我在 Rails 中使用 渲染 时遇到问题 我的控制器中有一个自定义操作 搜索 它应该呈现索引 如下所示 def search date params reserve date tables Table all render index e
  • 确定哪些对象引用 SQL Server 中的表

    我需要重命名一个包含许多列和针对该表进行处理的存储过程的表 在这种情况下 如何获取数据库中与表有关系的所有项目 Using sys dm sql referencing entities http msdn microsoft com en
  • 如何为 Rails gem 指定 rvm gemsets ?

    MyApp 正在使用 rvm gemset 电子邮件受保护 cdn cgi l email protection 这不是默认的 我正在使用 gem 每当 定期发送电子邮件通知 这是我的日程表 rb every 1 minutes do ru
  • 使用 pandas 和 numpy 解析冒号分隔的稀疏数据

    我想解析 pandas numpy 中 col index value 格式的数据文件 例如 0 23 3 41 1 31 2 65 将对应于这个矩阵 23 0 0 41 0 31 65 0 这似乎是表示文件中稀疏数据的一种非常常见的方法
  • 如何使用 clang-format 缩进 C++ pragma?

    我在用vim autoformat 它使用clang format作为外部格式化程序 看起来clang format不会缩进 C pragma 例如 include
  • 查找选定列中多个点的斜率

    给定以下数据框 structure list 5 c 0 1 0 0 9 22 4 c 1 3 0 0 1 17 3 c 1 3 0 0 0 12 2 c 1 3 0 0 2 10 1 c 0 0 0 4 3 9 0 c 0 1 0 2 2
  • 如何将嵌入的 Blazegraph 内容转储到 RDF 文件?

    I have 创建了 blazegraph RDF4J 存储库和连接 https wiki blazegraph com wiki index php Sesame API Tutorial在斯卡拉中 val props new Prope
  • 适用于 Android 和 iOS 的离线地图 SDK [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想为我的应用程序使用离线地图功能 有人会推荐任何有用的地图 SDK 吗 我找到了这些 Skobbler http developer skob
  • 实时数据和双向数据绑定:未调用自定义设置器

    我使用 2 路数据绑定来更新 ViewModel 中的 LiveData String 对象 并使用 EditText 中设置的字符串