gpt4 book ai didi

Android 数据绑定(bind) - 如何使用 ViewStub 进行数据绑定(bind)

转载 作者:可可西里 更新时间:2023-11-01 19:03:04 28 4
gpt4 key购买 nike

无论如何都可以将 viewStubs 与 dataBinding 一起使用吗? ViewStubProxy 有帮助吗?

我的 stub 电流看起来像这样:

    <ViewStub
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"

android:layout="@layout/progress_overlay"

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="@{myobject.bottom ? bottom:top}" />

但是当我膨胀 viewStub 时,这个布局将被替换,那么 ViewStubs 如何与 android dataBinding 一起使用?

这是我从 docs 中看到的:

ViewStubs

ViewStub 与普通的 View 有点不同。他们出发 不可见以及当它们可见或被明确告知时 膨胀,他们通过膨胀另一个来取代自己在布局中 布局。

因为 ViewStub 基本上从 View 层次结构中消失了, 绑定(bind)对象中的 View 也必须消失以允许 收藏。因为 View 是最终的,所以 ViewStubProxy 对象需要 ViewStub 的位置,使开发人员可以访问 ViewStub 当它存在并且当 ViewStub 已经膨胀了。

当膨胀另一个布局时,必须为 新版面。因此,ViewStubProxy 必须监听 ViewStub 的 ViewStub.OnInflateListener 并在那时建立绑定(bind)。 由于只能存在一个,ViewStubProxy 允许开发人员 在其上设置一个 OnInflateListener,它将在建立后调用 绑定(bind)。

最佳答案

只需按照文档中的说明设置监听器即可:

mBinding.viewStub.setOnInflateListener(new ViewStub.OnInflateListener() {
@Override
public void onInflate(ViewStub stub, View inflated) {
ViewStubBinding binding = DataBindingUtil.bind(inflated);
binding.setModel(model);
}
});



public void inflateViewStub(View view) {
if (!mBinding.viewStub.isInflated()) {
mBinding.viewStub.getViewStub().inflate();
}
}

关于Android 数据绑定(bind) - 如何使用 ViewStub 进行数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34712952/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com