请教一个安卓 data binding 双向绑定的问题

2018-05-16 22:44:40 +08:00
 winterbells

这里有个自定义组件:

<LinearLayout...>
    <TextView android:id="@+id/textView" .../>
    <EditText android:id="@+id/editText" .../>
</LinearLayout>

对应的 Java 文件:

public class CustomView extends LinearLayout {
    TextView title;
    EditText value;
    public CustomView(Context context, @Nullable AttributeSet attrs) { ... }
    getter return String...
    setter (String)...
}

对应的 ViewModel:

    public String title = "";
    public String value = "";
    @Bindable
    getter...
    setter...notifyPropertyChanged(...)

主界面 activity_main.xml

<layout...>
    <data><variable name="vm" type="com.test.test.CustomViewModel"/></data>
    <android.support.constraint.ConstraintLayout>
        <com.test.test.CustomView
            android:onClick="@{()->vm.onClick()}"
            app:title="@={vm.title}"
            app:value="@={vm.value}"/>
    </android.support.constraint.ConstraintLayout>
</layout>

现在的问题是,在 activity_main 界面修改了值,viewmodel 接收不到。但在 viewmodel 里修改,界面能显示。 想请教一下应该怎么做,网上搜了半天也没解决>.< 有个设置 adapter 的方法,但我试了,貌似没被解析

714 次点击
所在节点    问与答
3 条回复
WordTian
2018-05-16 22:52:03 +08:00
java 文件里有好几个构造方法,各有各的作用,都得改,不是说只改其中一个就好
winterbells
2018-05-16 22:57:12 +08:00
@WordTian #1 改了,用 AS 提供的组件( EditText 之类)可以获取。
就是不知道还有没有其它要改的地方。。
winterbells
2018-05-17 08:50:54 +08:00
##

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455430

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX