ObservableBoolean 数据绑定在设置时不会更新视图

用户2010496

我试图让数据绑定工作,但到目前为止没有成功。

我的MainActivity.java包含以下内容:

public ActivityMainBinding binding;
private Button createPartyButton;
public final ObservableBoolean partyIsCreated = new ObservableBoolean(false);

protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

 createPartyButton = (Button) findViewById(R.id.create_party_button);
 createPartyButton.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
    partyIsCreated.set(!partyIsCreated.get());
  }
 });
}

我的 activity_main.xml 是这样的:

<layout>
  <data>
    <variable
      name="main"
      type="com.example.MainActivity"/>
  </data>
  <LinearLayout
    android:id="@+id/container"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.MainActivity">

    <EditText android:id="@+id/my_nickname_text"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:enabled="@{main.partyIsCreated ? true : false}"/>

    <Button android:id="@+id/create_party_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/create_party_button_text"/>
  </LinearLayout>
</layout>

我在 android 部分的 build.gradle 包含这个:

 dataBinding {
    enabled = true
}

其余的构建设置是这样的:

compileSdkVersion 25
buildToolsVersion "25.0.2"
gradle:2.3.0

我可以看到数据绑定是自动生成的。但在视图中什么也没有发生。我错过了什么让数据绑定工作?

乔治芒特

问题是你没有设置变量:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    binding.setMain(this);
}

但这并不是唯一的问题。首先,您正在使用findViewById(),这对于数据绑定是完全没有必要的。您可以访问与ID视图create_party_button通过绑定引用公共领域:binding.createPartyButton

更重要的是,您根本不需要访问它。我不一定建议像您这样做时将 Activity 本身用作视图模型或控制器,但是如果您这样做:

public class MainActivity extends Activity {
    private ActivityMainBinding binding;
    public final ObservableBoolean partyIsCreated = new ObservableBoolean(false);

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        binding.setMain(this);
    }

    public void partyClicked() {
        partyIsCreated.set(!partyIsCreated.get());
    }
}

然后在布局本身中设置点击处理程序:

<Button android:id="@+id/create_party_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_party_button_text"
        android:onClick="@{() -> main.partyClicked()}/>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WPF ItemsControl绑定在绑定到视图模型中的对象中的ObservableCollection时不会更新

来自分类Dev

NativeScript单向数据绑定不会更新视图

来自分类Dev

将两个可观察的布尔值与ObservableBoolean或Observable <Boolean>组合

来自分类Dev

AngularJS-初始值为null时的绑定在更新后不会更新

来自分类Dev

Angular - 从 Observables 设置数据时,功能模块中的视图不会 100% 更新

来自分类Dev

如何使用数据绑定在WPF中设置列表视图项的背景颜色?

来自分类Dev

如何使用数据绑定在WPF中设置列表视图项的背景颜色?

来自分类Dev

更改视图模型数据时,extjs绑定的html不更新

来自分类Dev

{{myArray}}数组绑定在视图中未更新

来自分类Dev

WPF数据绑定在绑定整个对象时失败

来自分类Dev

数据绑定不会更新值

来自分类Dev

Blazor:更改绑定属性不会更新视图

来自分类Dev

手动设置属性时,单例属性绑定不会更新

来自分类Dev

从视图中设置数据绑定背景

来自分类Dev

当事件处理程序发生更新时,即使触发了属性更改,MVVM 视图绑定也不会更新

来自分类Dev

数据绑定ChildDataContext的属性不会更新ChildView

来自分类Dev

WPF数据绑定,值不会更新

来自分类Dev

WPF数据绑定:视图未从viewmodel更新

来自分类Dev

替换值时AngularJS视图不会更新

来自分类Dev

使用ObservableObject时视图不会更新

来自分类Dev

使用从服务器接收的JSON数据更新视图模型时,刷新Knockout绑定

来自分类Dev

从Chrome扩展程序内容脚本接收数据的AngularJS服务有时不会更新视图

来自分类Dev

绑定不会更新TabLayout自定义标题视图

来自分类Dev

动态重新绑定扩展程序不会更新视图

来自分类Dev

角度数据绑定在视图内部不起作用

来自分类Dev

如何使用数据绑定在不同的表上创建树视图

来自分类Dev

MVVM + 数据绑定 + 视图模型不更新视图

来自分类Dev

自定义UITableView页脚不会在滚动表视图时锁定在底部

来自分类Dev

自定义UITableView页脚在滚动表视图时不会锁定在底部

Related 相关文章

  1. 1

    WPF ItemsControl绑定在绑定到视图模型中的对象中的ObservableCollection时不会更新

  2. 2

    NativeScript单向数据绑定不会更新视图

  3. 3

    将两个可观察的布尔值与ObservableBoolean或Observable <Boolean>组合

  4. 4

    AngularJS-初始值为null时的绑定在更新后不会更新

  5. 5

    Angular - 从 Observables 设置数据时,功能模块中的视图不会 100% 更新

  6. 6

    如何使用数据绑定在WPF中设置列表视图项的背景颜色?

  7. 7

    如何使用数据绑定在WPF中设置列表视图项的背景颜色?

  8. 8

    更改视图模型数据时,extjs绑定的html不更新

  9. 9

    {{myArray}}数组绑定在视图中未更新

  10. 10

    WPF数据绑定在绑定整个对象时失败

  11. 11

    数据绑定不会更新值

  12. 12

    Blazor:更改绑定属性不会更新视图

  13. 13

    手动设置属性时,单例属性绑定不会更新

  14. 14

    从视图中设置数据绑定背景

  15. 15

    当事件处理程序发生更新时,即使触发了属性更改,MVVM 视图绑定也不会更新

  16. 16

    数据绑定ChildDataContext的属性不会更新ChildView

  17. 17

    WPF数据绑定,值不会更新

  18. 18

    WPF数据绑定:视图未从viewmodel更新

  19. 19

    替换值时AngularJS视图不会更新

  20. 20

    使用ObservableObject时视图不会更新

  21. 21

    使用从服务器接收的JSON数据更新视图模型时,刷新Knockout绑定

  22. 22

    从Chrome扩展程序内容脚本接收数据的AngularJS服务有时不会更新视图

  23. 23

    绑定不会更新TabLayout自定义标题视图

  24. 24

    动态重新绑定扩展程序不会更新视图

  25. 25

    角度数据绑定在视图内部不起作用

  26. 26

    如何使用数据绑定在不同的表上创建树视图

  27. 27

    MVVM + 数据绑定 + 视图模型不更新视图

  28. 28

    自定义UITableView页脚不会在滚动表视图时锁定在底部

  29. 29

    自定义UITableView页脚在滚动表视图时不会锁定在底部

热门标签

归档