Android架构组件:dataBinding不会更改TextView值

时间:2017-11-20 19:18:34

标签: android xml mvvm data-binding

您好我试用Android的新架构组件,我已经构建了一个简单的应用程序,现在我想将一个Texview绑定到我的ViewModel中的一个变量,我之前做过这个但是我没有#39; t使用组件。现在没有调用getter,TextView的值也没有改变。

MainActivity:

public class MainActivity extends AppCompatActivity implements LifecycleOwner {

    public MainViewModel viewModel;

MainViewModel:

public class MainViewModel extends ViewModel {

    private LatLng origin;

public LatLng getOrigin() {
        return origin;
    }

activity_main.xml中:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="jacopo.com.carbook.MainActivity">
    <data>
        <variable name="viewModel" type="jacopo.com.carbook.MainViewModel" />
    </data>
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{Double.toString(viewModel.origin.latitude)}"/>
</layout

在gradle文件中启用了dataBinding,因此我不确定这里发生了什么,因为它与之前版本的应用程序的代码相同。

1 个答案:

答案 0 :(得分:0)

您是否已将以下行添加到活动中(根据文件名):

binding = DataBindingUtil.setContentView(this, R.layout.activity_xml);
viewModel = ViewModelProviders.of(this).get(ActivityViewModel.class);

binding.setLifecycleOwner(this);
binding.setViewModel(viewModel);