Search code examples
androiduser-interfaceandroid-constraintlayoutandroid-viewbinding

Why ConstraintlLayout items are not visible when applying View Binding?


This is the recyclerview item layout file:

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:paddingHorizontal="16dp"
    android:paddingVertical="12dp">

    <com.paypal.android.p2pmobile.common.widgets.BubbleView
        android:id="@+id/activity_list_item_contact_image"
        android:layout_width="@dimen/ui_size_xl_2"
        android:layout_height="@dimen/ui_size_xl_2"
        android:layout_marginStart="4dp"
        android:layout_marginTop="4dp"
        tools:ignore="ContentDescription"
        app:initialsTextSize="@dimen/text_size_primary"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

    <TextView
        android:id="@+id/activity_list_item_name"
        style="@style/activity_list_item_name"
        android:layout_width="0dp"
        android:layout_height="@dimen/ui_size_sm"
        android:gravity="center|start"
        android:text="Abc India Pvt. Ltd."
        tools:ignore="HardcodedText"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
        app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
        android:layout_marginHorizontal="16dp"/>

    <LinearLayout
        android:id="@+id/activity_list_item_status_container"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        app:layout_constraintTop_toBottomOf="@+id/activity_list_item_name"
        app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
        app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
        android:layout_marginHorizontal="16dp" >

        <com.paypal.uicomponents.UiBadge
            android:id="@+id/activity_list_item_badge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone"
            tools:visibility="visible"
            android:layout_marginEnd="6dp"
            android:text="Due"
            app:uiStrokeWidth="0dp"
            style="@style/UiBadge.Warning"
            tools:ignore="HardcodedText" />

        <TextView
            android:id="@+id/activity_list_item_date"
            style="@style/activity_list_item_details"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/ui_size_xs"
            android:gravity="center|start"
            android:text="Yesterday"
            tools:ignore="HardcodedText" />

        <ImageView
            android:id="@+id/activity_list_item_status_icon"
            android:layout_width="@dimen/ui_size_xs"
            android:layout_height="@dimen/ui_size_xs"
            android:layout_marginEnd="6dp"
            android:scaleType="fitXY"
            tools:ignore="ContentDescription"
            app:srcCompat="@drawable/ui_purchase_protection_alt" />

        <TextView
            android:id="@+id/activity_list_item_status_text"
            style="@style/activity_list_item_details"
            android:layout_width="match_parent"
            android:layout_height="18dp"
            android:gravity="center|start"
            android:text="Request Received"
            tools:ignore="HardcodedText" />

    </LinearLayout>

    <TextView
        android:id="@+id/activity_list_item_notes"
        style="@style/activity_list_item_details"
        android:layout_width="0dp"
        android:maxHeight="@dimen/ui_size_lg"
        android:layout_marginTop="4dp"
        android:maxLines="2"
        android:text="Personal notes - My checks haven't cleared yet hope u could loan me some money say around $40."
        tools:ignore="HardcodedText"
        app:layout_constraintTop_toBottomOf="@+id/activity_list_item_status_container"
        app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
        app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
        android:layout_marginHorizontal="16dp" />

    <TextView
        android:id="@+id/activity_list_item_status_desc"
        style="@style/activity_list_item_details"
        android:layout_width="0dp"
        android:maxHeight="@dimen/ui_size_lg"
        android:layout_marginTop="6dp"
        android:ellipsize="end"
        android:maxLines="2"
        android:text="Abc notes - Waiting for your request to be accepted. Please allow us some time to do this."
        tools:ignore="HardcodedText"
        app:layout_constraintTop_toBottomOf="@+id/activity_list_item_notes"
        app:layout_constraintStart_toEndOf="@id/activity_list_item_contact_image"
        app:layout_constraintEnd_toStartOf="@id/activity_list_item_amount"
        android:layout_marginHorizontal="16dp" />

    <TextView
        android:id="@+id/activity_list_item_amount"
        style="@style/UiTextView.Xl.Regular"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/ui_size_sm"
        android:layout_alignParentEnd="true"
        android:gravity="center|end"
        android:text="$149.99"
        android:textColor="#737C7F"
        android:textSize="18sp"
        tools:ignore="HardcodedText"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

And this layout looks like this: enter image description here

This layout looks fine when I implement the recyclerview adpater in normal way. But, When use View Binding in the recyclerview adapter, only those elements whose layout_width not set to 0dp is visible. UI elements with 0dp is not visible. This problem will be solved if I use RelativeLayout instead of ConstarintLayout. But, I want to use ConstraintLayout`. So, what could be the problem? How can I solve this?


Solution

  • I solved the problem. I replaced the code in the onCreateViewHolder() from this

    ActivitySummaryListTxnItemV2Binding.inflate(LayoutInflater.from(container.getContext()));

    to this:

    ActivitySummaryListTxnItemV2Binding.inflate(LayoutInflater.from(container.getContext()), container, false);