Связывание с пользовательским представлением внутри Android - PullRequest
0 голосов
/ 11 апреля 2019

Привет! Я работаю с привязкой данных RecyclerView, в которой есть пользовательский вид.

Перед добавлением CustomView он работает нормально.После его добавления возникает ошибка BindingImpl, например ошибка: невозможно найти импорт символа appPackage.databinding.CheckoutBookCardBindingImpl;^ символ: класс CheckoutBookCardBindingImpl расположение: пакет appPackage.databinding

Файл макета находится ниже

<data>

    <variable
        name="bookWithDownloadInfo"
        type="appPackage.feature.bookbag.model.BookWithDownloadInfo" />
</data>

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/dimen_10dp"
    android:background="@color/white">

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

        <RelativeLayout
            android:id="@+id/checkout_parent_top_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="@dimen/dimen_10dp">

            <ImageView
                android:id="@+id/img_checkout_book_banner"
                android:layout_width="108dp"
                android:layout_height="@dimen/dimen_150dp"
                android:layout_alignParentStart="true"
                android:layout_marginStart="@dimen/dimen_10dp"
                android:layout_marginEnd="@dimen/dimen_10dp"
                android:contentDescription="@string/desc_checkout_book_banner"
                app:banner_image_src="@{bookWithDownloadInfo.book}" />

            <LinearLayout
                android:id="@+id/book_name_container"
                android:layout_width="match_parent"
                android:layout_height="@dimen/dimen_90dp"
                android:layout_toEndOf="@id/img_checkout_book_banner"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/txt_checkout_book_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/dimen_5dp"
                    android:fontFamily="@font/roboto_medium"
                    android:maxLines="2"
                    android:textColor="@color/color_005493"
                    android:textSize="@dimen/dimen_18sp"
                    app:book_title="@{bookWithDownloadInfo.book}"
                    tools:text="@string/book_title" />

                <TextView
                    android:id="@+id/txt_checkout_book_author_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="@dimen/dimen_5dp"
                    android:fontFamily="@font/roboto_italic"
                    android:text="@string/author_name_or_kind"
                    android:textSize="@dimen/dimen_14sp"
                    app:book_author="@{bookWithDownloadInfo.book}"
                    tools:text="Author Name or Kind" />
            </LinearLayout>

            <ImageView
                android:id="@+id/img_checkout_book_media_type"
                android:layout_width="@dimen/dimen_30dp"
                android:layout_height="@dimen/dimen_30dp"
                android:layout_below="@id/book_name_container"
                android:layout_marginStart="@dimen/dimen_5dp"
                android:layout_toEndOf="@id/img_checkout_book_banner"
                android:contentDescription="@string/desc_media_type"
                android:padding="@dimen/dimen_5dp"
                android:src="@drawable/icon_audiobook"
                app:book_media_type="@{bookWithDownloadInfo.book}" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/book_name_container"
                android:layout_gravity="center"
                android:layout_toEndOf="@id/img_checkout_book_media_type"
                android:gravity="center"
                android:padding="@dimen/dimen_5dp"
                android:textColor="@color/black"
                android:textSize="@dimen/dimen_14sp"
                app:media_type="@{bookWithDownloadInfo.book}"
                tools:text="Media type" />

            <TextView
                android:id="@+id/txt_checkout_book_due"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/img_checkout_book_media_type"
                android:layout_marginStart="@dimen/dimen_5dp"
                android:layout_marginTop="@dimen/dimen_10dp"
                android:layout_toEndOf="@id/img_checkout_book_banner"
                android:text="@string/checkout_book_due"
                android:textColor="@color/black"
                android:textSize="@dimen/dimen_14sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/txt_checkout_book_due_value"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/img_checkout_book_media_type"
                android:layout_marginTop="@dimen/dimen_10dp"
                android:layout_toEndOf="@id/txt_checkout_book_due"
                android:text="@string/june_2_2018"
                android:textColor="@color/black"
                android:textSize="@dimen/dimen_14sp"
                tools:text="June 2, 2018" />

            <Button
                android:id="@+id/btn_checkout_book_download"
                android:layout_width="@dimen/dimen_130dp"
                android:layout_height="@dimen/dimen_40dp"
                android:layout_below="@id/txt_checkout_book_due"
                android:layout_marginStart="@dimen/dimen_5dp"
                android:layout_marginTop="@dimen/dimen_10dp"
                android:layout_marginEnd="@dimen/dimen_10dp"
                android:background="@drawable/action_button_background"
                android:fontFamily="@font/roboto_medium"
                android:text="@string/action_download"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:textSize="@dimen/dimen_15sp" />

            <!--for downloaded book action-->
            <Button
                android:id="@+id/btn_checkout_book_open"
                android:layout_width="@dimen/dimen_130dp"
                android:layout_height="@dimen/dimen_40dp"
                android:layout_below="@id/txt_checkout_book_due"
                android:layout_marginStart="@dimen/dimen_5dp"
                android:layout_marginTop="@dimen/dimen_10dp"
                android:layout_marginEnd="@dimen/dimen_10dp"
                android:background="@drawable/action_button_background"
                android:fontFamily="@font/roboto_medium"
                android:text="@string/action_open"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:textSize="@dimen/dimen_15sp" />

            <Button
                android:id="@+id/btn_checkout_book_return"
                android:layout_width="@dimen/dimen_130dp"
                android:layout_height="@dimen/dimen_40dp"
                android:layout_below="@id/txt_checkout_book_due"
                android:layout_marginTop="@dimen/dimen_10dp"
                android:layout_toEndOf="@id/btn_checkout_book_download"
                android:background="@drawable/action_button_background"
                android:fontFamily="@font/roboto_medium"
                android:text="@string/action_return"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:textSize="@dimen/dimen_15sp" />

            <!--for downloaded book action-->
            <Button
                android:id="@+id/btn_checkout_book_remove"
                android:layout_width="@dimen/dimen_130dp"
                android:layout_height="@dimen/dimen_40dp"
                android:layout_below="@id/txt_checkout_book_due"
                android:layout_marginTop="@dimen/dimen_10dp"
                android:layout_toEndOf="@id/btn_checkout_book_open"
                android:background="@drawable/action_button_background"
                android:fontFamily="@font/roboto_medium"
                android:text="@string/action_remove"
                android:textAllCaps="false"
                android:textColor="@color/white"
                android:textSize="@dimen/dimen_15sp" />

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/downloadProgressbarLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/color_005493_trans">

            <appPackage.feature.common.view.CircularProgressView
                android:id="@+id/downloadProgressbar"
                android:layout_width="@dimen/dimen_220dp"
                android:layout_height="@dimen/dimen_220dp"
                android:layout_centerInParent="true"
                android:backgroundTintMode="add"
                app:adpgb_background_color="@android:color/transparent"
                app:adpgb_circle_starting_degree="-89"
                app:adpgb_finished_color="@android:color/transparent"
                app:adpgb_finished_stroke_width="@dimen/dimens_10dp"
                app:adpgb_progress="@{bookWithDownloadInfo.downloadPercent}"
                app:adpgb_show_text="false"
                app:adpgb_unfinished_color="@color/white_trans"
                app:adpgb_unfinished_stroke_width="@dimen/dimen_74dp" />

            <ImageView
                android:id="@+id/downloadOptions"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentBottom="true"
                android:layout_marginEnd="@dimen/dimen_30dp"
                android:layout_marginBottom="@dimen/dimens_20dp"
                android:src="@drawable/ic_progress_3_dots" />

            <ImageView
                android:id="@+id/cancelDownload"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/downloadOptions"
                android:layout_alignParentEnd="true"
                android:layout_marginEnd="@dimen/dimens_20dp"
                android:layout_marginBottom="@dimen/dimen_30dp"
                android:src="@drawable/cancel_download" />

        </RelativeLayout>

        <!--<include
            android:id="@+id/downloadProgressbarLayout"
            layout="@layout/download_circular_progress_bar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone"
            bind:bookDownloadInfo="@{bookWithDownloadInfo}" />-->
    </FrameLayout>
</androidx.cardview.widget.CardView>

Пользовательское представление - appPackage.feature.common.view.CircularProgressView

Это класс Java, который расширяет представление (используется для отображения прогресса, настроенного для требований приложения)

У него есть метод установки, как показано ниже

Некоторые фрагменты кода из класса.Я использую Kotlin в качестве развивающего языка.

открытый класс CircularProgressView extends View {

private Paint finishedPaint;
private Paint unfinishedPaint;
private Paint innerCirclePaint;

public CircularProgressView(Context context) {
    this(context, null);
}

public CircularProgressView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
}

public void setAdProgress(int percent) {
    if (percent >= 0) {
        setProgress(percent);
    }
}

}

Как можно устранить ошибку при привязке данных в настраиваемом представлении.Готов предоставить информацию о переезде в случае необходимости.

1 Ответ

0 голосов
/ 12 апреля 2019

Ваш сеттер должен выглядеть так:

public void setAdpgb_progress(int adpgb_progress) {
    this.adpgb_progress = adpgb_progress;
}

Также убедитесь, что вы правильно проверили журнал для получения дополнительной информации об ошибке привязки данных. enter image description here

...