android - 如何在 Dialog 中使用数据绑定(bind)?

标签 android mvvm data-binding android-databinding

我在对话框中实现数据绑定(bind)时遇到了麻烦。有可能吗?

下面是我的xml。

<data>

    <variable
        name="olaBooking"
        type="com.example.myapp.viewmodels.ViewModel" />
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:id="@+id/cv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:elevation="4dp"
        android:padding="15dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorPrimary"
                android:gravity="center"
                android:padding="15dp"
                android:text="OLA Cab Booked !"
                android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

            <View
                android:layout_width="match_parent"
                android:layout_height="2dp"
                android:background="@color/colorPrimaryDark" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="start|center"
                android:padding="15dp"
                android:text="Car Details" />

            <View
                android:layout_width="match_parent"
                android:layout_height="2dp"
                android:background="@color/colorPrimaryDark" />

            <TextView
                android:id="@+id/driverName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="@{olaBooking.driverName}" />

            <TextView
                android:id="@+id/carModel"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="@{olaBooking.getCarName}" />

            <TextView
                android:id="@+id/carNo"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="@{olaBooking.getCabNo}" />

            <TextView
                android:id="@+id/eta"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="@{olaBooking.getEta}" />
        </LinearLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

我想将上面的布局绑定(bind)到一个Dialog中。这怎么可能?下面是我尝试过的 java 代码,但它不起作用

        dialog.setContentView(R.layout.dialog_ola_booking_confirmed);
    DialogOlaBookingConfirmedBinding binding = DataBindingUtil.inflate(
            LayoutInflater.from(dialog.getContext()),
            R.layout.dialog_ola_booking_confirmed,
            (ViewGroup) dialog.findViewById(R.id.cv),
            false);
    ViewModel viewModel = new ViewModel(this, event.olaBooking);

最佳答案

可以在 Dialog 中使用数据绑定(bind),首先要让绑定(bind)在您的 Dialog 上工作,您应该先对其进行充气,然后像这样将其传递给 setContentView。

DialogOlaBookingConfirmedBinding binding = DataBindingUtil.inflate(LayoutInflater.from(getContext()), R.layout. dialog_ola_booking_confirmed, null, false);
setContentView(binding.getRoot());

然后就可以传viewModel了:

binding.setViewModel(new ViewModel(this, event.olaBooking));

现在你可以看到它在工作了。

关于android - 如何在 Dialog 中使用数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967868/

相关文章:

c# - Unity Android Intent

android - 使用 java.net.URL 缓慢下载 JPG

android - 当我使用另一个 Activity 返回到它时,我增加的变量会自行重置

c# - 从代码中选择网格控件中的一行

android - 了解 drawRect 或绘图坐标在 Android 中的实际工作方式

c# - 模型中的 Mvvm 嵌套属性已更改

android - 多次调用 livedata observe 的 onChanged 方法

wpf - 选中的列表框 (WPF)

c# - WPF DataGrid 绑定(bind)不显示值

c# - 两种方式绑定(bind) C#。自制类的文本框和对象