如何使用 ObservableField
How to use ObservableFields
我是 android 数据绑定的新手。在官方 document 中,我发现如果您没有太多数据可以捆绑到 Observable 对象中,则可以使用 ObservableFields(如果我错了请纠正我)。
我在需要显示和隐藏视图的布尔变量上的 Activity class.Based 旁边有一个布尔变量。我的问题是如何在布局 xml 文件中使用 ObservableBoolean 以及如何从相应的 activity?
绑定该变量
提前致谢。
在 Android Studio 2.2 中直接使用它存在一个错误,该错误已在 Android Studio 2.3 中修复。在 AS 2.3 中,您可以简单地这样做:
<layout>
<data>
<import type="android.view.View"/>
<variable name="showView" type="android.databinding.ObservableBoolean"/>
</data>
<FrameLayout ...>
<!-- more views -->
<View android:visiblity="@{showView ? View.VISIBLE : View.GONE}" .../>
</FrameLayout>
</layout>
然后在创建绑定时设置它:
private final ObservableBoolean showView = new ObservableBoolean(true);
@Override
public void onCreate(Bundle savedInstanceState) {
MainActivityBinding binding = DataBindingUtil.setContentView(this,
R.layout.main_activity);
binding.setShowView(showView);
}
使用 Android Studio 2.2,您需要将该 ObservableField 包含在另一个对象中。由于它在您的 Activity 中,您可以通过它。你只需要让它成为 public(它们应该总是最终的)。
<layout>
<data>
<import type="android.view.View"/>
<variable name="activity" type="com.example.myproj.ActivityMain"/>
</data>
<FrameLayout ...>
<!-- more views -->
<View android:visiblity="@{activity.showView ? View.VISIBLE : View.GONE}" .../>
</FrameLayout>
</layout>
而你的 Activity 是这样的:
public class ActivityMain extends Activity {
public final ObservableBoolean showView = new ObservableBoolean(true);
@Override
public void onCreate(Bundle savedInstanceState) {
MainActivityBinding binding = DataBindingUtil.setContentView(this,
R.layout.main_activity);
binding.setActivity(this);
}
}
我是 android 数据绑定的新手。在官方 document 中,我发现如果您没有太多数据可以捆绑到 Observable 对象中,则可以使用 ObservableFields(如果我错了请纠正我)。 我在需要显示和隐藏视图的布尔变量上的 Activity class.Based 旁边有一个布尔变量。我的问题是如何在布局 xml 文件中使用 ObservableBoolean 以及如何从相应的 activity?
绑定该变量提前致谢。
在 Android Studio 2.2 中直接使用它存在一个错误,该错误已在 Android Studio 2.3 中修复。在 AS 2.3 中,您可以简单地这样做:
<layout>
<data>
<import type="android.view.View"/>
<variable name="showView" type="android.databinding.ObservableBoolean"/>
</data>
<FrameLayout ...>
<!-- more views -->
<View android:visiblity="@{showView ? View.VISIBLE : View.GONE}" .../>
</FrameLayout>
</layout>
然后在创建绑定时设置它:
private final ObservableBoolean showView = new ObservableBoolean(true);
@Override
public void onCreate(Bundle savedInstanceState) {
MainActivityBinding binding = DataBindingUtil.setContentView(this,
R.layout.main_activity);
binding.setShowView(showView);
}
使用 Android Studio 2.2,您需要将该 ObservableField 包含在另一个对象中。由于它在您的 Activity 中,您可以通过它。你只需要让它成为 public(它们应该总是最终的)。
<layout>
<data>
<import type="android.view.View"/>
<variable name="activity" type="com.example.myproj.ActivityMain"/>
</data>
<FrameLayout ...>
<!-- more views -->
<View android:visiblity="@{activity.showView ? View.VISIBLE : View.GONE}" .../>
</FrameLayout>
</layout>
而你的 Activity 是这样的:
public class ActivityMain extends Activity {
public final ObservableBoolean showView = new ObservableBoolean(true);
@Override
public void onCreate(Bundle savedInstanceState) {
MainActivityBinding binding = DataBindingUtil.setContentView(this,
R.layout.main_activity);
binding.setActivity(this);
}
}