如何将数据绑定与 ProgressBar 一起使用?

How can I use Data Binding with ProgressBar?

我正在尝试将 DataBinding 用于 ProgressBar,但我不知道如何使用

这是我的xml代码

<?xml version="1.0" encoding="utf-8"?>
<layout
    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">

    <data>
        <variable
            name="addActivity"
            type="com.khairo.dallasadmin.view.addScreenSaver.AddScreenSaver" />

        <variable
            name="saverModel"
            type="com.khairo.dallasadmin.model.addScreenSaver.AddScreenSaverModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".view.addScreenSaver.AddScreenSaver">

        <androidx.appcompat.widget.AppCompatImageView
            android:id="@+id/image"
            android:layout_width="@dimen/_130sdp"
            android:layout_height="@dimen/_230sdp"
            android:src="@drawable/ic_add"
            android:onClick="@{()->addActivity.selectImage()}"
            android:layout_marginTop="@dimen/_25sdp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />

        <androidx.appcompat.widget.AppCompatButton
            android:layout_width="@dimen/_100sdp"
            android:layout_height="@dimen/_35sdp"
            android:text="@string/send_image"
            android:background="@drawable/carve_blue"
            android:textStyle="bold"
            android:textColor="@color/white"
            android:onClick="@{()->addActivity.sendImage()}"
            android:textSize="@dimen/_11ssp"
            android:layout_margin="@dimen/_15sdp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" />
    
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

如你所见,我添加了

layout, data and variable to xml code

我现在必须在模型中做什么?

非常感谢<3

对于进度条,您需要执行以下操作:

第一个: 您应该 导入视图 以便能够处理您的进度条在数据标记中的可见性,如下所示:

<data>
.....
import type="android.view.View"/>
<data>

其次: 您应该将 isLoading 变量添加到布尔类型的模型中。此 isLoading 变量会根据您的业务进行更改,因此当您需要显示进度条时,请将其保持为 true.

为了让它顺利运行,你应该让它像 Observable 一样。你可以通过让你的模型扩展 BaseObservable

public class yourmodel extends BaseObservable

那么您应该为 isLoading 生成 getter 和 setter,如下所示:

     @Bindable
     public boolean isLoading() {
          return isLoading;
     }
     public void setLoading(boolean loading) {
          isLoading = loading;
          notifyPropertyChanged(BR.loading);
     }

注意:您可能需要构建项目以生成 BR 文件。

您可以查看此模型以了解 file 更多详细信息

您的 isLoading 字段现在应该是 Observable

第三:

您应该根据 isLoading 的值添加可见性属性。

 <ProgressBar
        ..........
        ..........
        android:visibility="@{addActivity.isLoading ? View.VISIBLE : View.GONE}"/>

希望对您有所帮助。