gpt4 book ai didi

安卓数据绑定(bind): Why doesn't passing in variable to ViewStubs work like include layouts?

转载 作者:行者123 更新时间:2023-12-05 00:21:39 24 4
gpt4 key购买 nike

使用 Android 数据绑定(bind),可以在包含的布局上设置变量,如下所示(来自文档):

    <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/name"
bind:user="@{user}"/>
<include layout="@layout/contact"
bind:user="@{user}"/>
</LinearLayout>
</layout>

在使用 ViewStub 时,我尝试做同样的事情来传递变量。 ,但它不起作用。为什么不 ViewStub s 工作喜欢包括布局?

最佳答案

将数据传递给 ViewStub s 按预期工作。您定义您的命名空间并在该命名空间中传递变量,并将其作为常规 <variable> 接受在您的 ViewStub布局,如下:

main_layout.xml:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my-namespace="http://schemas.android.com/apk/res-auto">
<data>
<variable name="myData" type="com.example.SomeModel" />
</data>

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<ViewStub
android:id="@+id/view_stub"
android:inflatedId="@+id/view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/another_layout"
my-namespace:data="@{myData}"
/>
</RelativeLayout>
</layout>

另一个_layout.xml:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<!-- No need to declare my-namespace here -->
<data>
<variable name="data" type="com.example.SomeModel" />
</data>

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{data.someValue}" />

</RelativeLayout>
</layout>

关于安卓数据绑定(bind): Why doesn't passing in variable to ViewStubs work like include layouts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43099750/

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