DataBinding ObservableField<String>不更新视图问题求助
解决DataBinding中EditText输入无法同步更新TextView的问题
嘿,我看了你的代码,一下子就找到问题所在啦!你当前用的是单向数据绑定,这种绑定只能实现「数据模型→UI」的单向同步,但反过来UI的变化(比如EditText输入内容)不会自动更新数据模型里的ObservableField,所以TextView绑定的内容自然不会跟着改变。
问题根源
默认的@{}语法是单向绑定:当数据模型的ObservableField值变化时,会同步更新UI,但UI的输入变化不会反向写入数据模型。你在EditText里输入内容时,这个变化并没有同步到student.name中,所以TextView显示的还是初始值。
解决方案:改用双向数据绑定
只需要把EditText的android:text绑定改成双向绑定语法@={},就能实现「UI↔数据模型」的双向同步了。
修改后的activity_main.xml中EditText代码:
<EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="@={student.name}"/> <!-- 核心修改:把@{改成@={ -->
其他验证点(你的代码已满足)
Student类中的name字段是public的,这是DataBinding能直接访问并更新它的前提,你已经做得很对了。- 你调用的
activityMainBinding.executePendingBindings()并不是必须的,但留着也不会有问题,它的作用是立即执行所有待处理的绑定更新。
现在重新运行应用试试,在EditText里输入内容时,TextView就会实时同步显示你输入的内容啦!
内容的提问来源于stack exchange,提问作者Rahul Chaurasia
相关产品推荐
相关产品推荐

