title: How can I update the UI without skipping frames
body: <p>So I am developing and android app in Kotlin with coroutines and no matter what change I make, I still keep getting the message:</p>
  <pre><code>I/Choreographer: Skipped 59 frames!  The application may be doing too much work on its main thread.
  </code></pre>
  <p>How can I get rid of it. I mean like I am only displaying nine photos... Below is my code</p>
  <p><strong>Model:</strong></p>
  <pre><code>data class Food (
      val id: String,
      val name: String,
      val price: String,
      @Json(name = &quot;img_url&quot;) val imgSrcUrl: String,
      val type: String,
      val description: String,
      val average_rating: String,
      val number_of_raters: String,
      val special_price: String
  )
  data class FoodCategory(
      val id: String,
      val title: String,
      val foods: List&lt;Food&gt;
  )
  </code></pre>
  <p><strong>ViewModel:</strong></p>
  <pre><code>enum class NetworkStatus {LOADING, DONE, FAILED}
  
  enum class FontFamily (@FontRes val fontRes: Int) {
      POPPINS_BOLD(R.font.poppins_bold),
      POPPINS(R.font.poppins)
  }
  
  class FoodOverviewViewModel(private val foodRepository: FoodRepository): ViewModel() {
  
      private lateinit var foodProducts: List&lt;Food&gt;
  
      //This is the data that is gonna be exposed to the viewmodel
      //It will be submitted to a ListAdapter
      private val _foodCategory = MutableLiveData&lt;List&lt;FoodCategory&gt;&gt;()
      val foodCategory: LiveData&lt;List&lt;FoodCategory&gt;&gt;
          get() = _foodCategory
      
      //Used to display a progress bar for network status
      private val _status = MutableLiveData&lt;NetworkStatus&gt;()
      val status: LiveData&lt;NetworkStatus&gt;
          get() = _status
  
      init {
          getOverviewProducts()
      }
  
      private fun getOverviewProducts() {
          viewModelScope.launch(Dispatchers.Default) {
              _status.postValue(NetworkStatus.LOADING)
              try {
                  getUpdatedFood()
                  Log.i(&quot;getOverviewProducts&quot;,&quot;I am running on tread: $coroutineContext&quot;)
                  _status.postValue(NetworkStatus.DONE)
  
              }catch (e: Exception) {
                  _status.postValue(NetworkStatus.FAILED)
              }
          }
      }
  
      private suspend fun getUpdatedFood() {
          //withContext(Dispatchers.Default) {
              val limiter = 6 //Number of items I want to get from the server
              val foodCategory = arrayListOf&lt;FoodCategory&gt;()
              Log.i(&quot;getUpdatedFood&quot;,&quot;I am running on tread: $coroutineContext&quot;)
  
              val getRecommended = foodRepository.getRecommendedFood(limiter.toString())
              foodCategory += FoodCategory(id = 0.toString(), title = &quot;Recommended for you&quot;, foods = getRecommended)
              
              val getSpecials = foodRepository.getSpecials(limiter.toString())
              foodCategory += FoodCategory(id = 1.toString(), title = &quot;Specials&quot;, foods = getSpecials)
  
              _foodCategory.postValue(foodCategory)
          //}
      }
  }
  </code></pre>
  <p><strong>Repository:</strong></p>
  <pre><code>class FoodRepository {
  
      suspend fun getRecommendedFood(limiter: String) = withContext(Dispatchers.IO) {
          Log.i(&quot;Resp-getRecommended&quot;,&quot;I am running on tread: $coroutineContext&quot;)
          return@withContext ProductApi.retrofitService.getRecommended(limiter)
      }
      suspend fun getSpecials(limiter: String) = withContext(Dispatchers.IO) {
          Log.i(&quot;Resp-getSpecials&quot;,&quot;I am running on tread: $coroutineContext&quot;)
          return@withContext ProductApi.retrofitService.getSpecials(limiter)
      }
  }
  
  
  
  
  </code></pre>
  <p><strong>BindingAdapters:</strong></p>
  <pre><code>
  //Load image using Glide (in Food item recycleview)
  @BindingAdapter(&quot;imageUrl&quot;)
  fun bindImage(imgView: ImageView , imgUrl: String?) {
      imgUrl?.let {
          val imgUri = imgUrl.toUri().buildUpon().scheme(&quot;http&quot;).build()
          Glide.with(imgView.context)
              .load(imgUri)
              .apply(
                  RequestOptions()
                  .placeholder(R.drawable.loading_animation)
                  .error(R.drawable.ic_broken_image))
              .into(imgView)
      }
  }
  
  //set raters count (in Food item recycleview)
  @BindingAdapter(&quot;ratersCount&quot;)
  fun bindText(txtView: TextView, number_of_raters: String?) {
      number_of_raters?.let {
          val ratersCount = &quot;(${number_of_raters})&quot;
          txtView.text = ratersCount
      }
  }
  
  //update the progressbar visibilty (in outer-parent recycleview) 
  @BindingAdapter(&quot;updateStatus&quot;)
  fun ProgressBar.updateStatus(status: NetworkStatus?) {
      visibility = when (status) {
          NetworkStatus.LOADING -&gt; View.VISIBLE
          NetworkStatus.DONE -&gt; View.GONE
          else -&gt; View.GONE
      }
  }
  
  //Hide or view an imageview based in the network Status. When network Error, an error image
  //will show (in outer-parent recycleview)
  @BindingAdapter(&quot;setNoInternet&quot;)
  fun ImageView.setNoInternet(status: NetworkStatus?) {
      when(status) {
          NetworkStatus.LOADING -&gt; {
              visibility = View.GONE
          }
          NetworkStatus.DONE -&gt; {
              visibility = View.GONE
          }
          NetworkStatus.FAILED -&gt; {
              visibility = View.VISIBLE
              setImageResource(R.drawable.ic_connection_error)
          }
      }
  }
  
  //Submit the list of FoodCatergory item to the outer-parent recycleview
  @BindingAdapter(&quot;listData&quot;)
  fun bindRecyclerView(recyclerView: RecyclerView, data: List&lt;FoodCategory&gt;?) {
      (recyclerView.adapter as FoodCategoryAdapter).submitList(data)
  }
  
  //Submit list the the Food item recyclew view (child recycleView)
  @BindingAdapter(&quot;setProducts&quot;)
  fun RecyclerView.setProducts(foods: List&lt;Food&gt;?) {
      if (foods != null) {
          val foodAdapter = FoodItemAdapter()
          foodAdapter.submitList(foods)
  
          adapter = foodAdapter
      }
  }
  </code></pre>
  <p>I have a Recycleview of Food Item and a Recycleview Pool of FoodCategory. If I comment out
  <code>_foodCategory.postValue(foodCategory) </code>
  in <strong>ViewModel: getUpdatedFood()</strong> than I do not get the message. However, when I submit the list to the outer recycleview (The one the hold the viewpool), than I get this answer. Please help. I been stuck on it for a while tryna get rid of that message.</p>
  <p>Thank you..</p>
  <p><em><strong>Updated</strong></em>
  Below is the adapeters and its view holders</p>
  <p><em><strong>FoodItem layout</strong></em></p>
  <pre><code>&lt;layout
          xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
          xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;&gt;
      &lt;data&gt;
  
          &lt;import type=&quot;android.view.View&quot;/&gt;
          &lt;variable
                  name=&quot;foodItem&quot;
                  type=&quot;com.example.e_commerceapp.models.Food&quot;/&gt;
          &lt;variable
                  name=&quot;font&quot;
                  type=&quot;com.example.e_commerceapp.products.overview.FontFamily&quot;/&gt;
      &lt;/data&gt;
  
      &lt;androidx.constraintlayout.widget.ConstraintLayout
              android:id=&quot;@+id/child_item_main_layout&quot;
              android:background=&quot;@drawable/search_background&quot;
              android:layout_marginTop=&quot;10dp&quot;
              android:layout_marginStart=&quot;10dp&quot;
              android:layout_marginBottom=&quot;10dp&quot;
              android:layout_width=&quot;150dp&quot;
              android:layout_height=&quot;250dp&quot;&gt;
  
          &lt;ImageView
                  android:layout_width=&quot;120dp&quot;
                  android:layout_marginStart=&quot;10dp&quot;
                  android:layout_marginEnd=&quot;10dp&quot;
                  android:id=&quot;@+id/burger_image&quot;
                  app:layout_constraintTop_toTopOf=&quot;parent&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  android:layout_height=&quot;160dp&quot;
                  /&gt;
  &lt;!--        app:imageUrl=&quot;@{foodItem.imgSrcUrl}&quot;--&gt;
  
          &lt;TextView
                  android:layout_width=&quot;match_parent&quot;
                  android:layout_height=&quot;34dp&quot;
                  android:layout_marginStart=&quot;5dp&quot;
                  android:id=&quot;@+id/burger_title&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  android:layout_marginEnd=&quot;5dp&quot;
                  android:singleLine=&quot;true&quot;
                  android:textColor=&quot;#B4000000&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/burger_image&quot;
                  android:text=&quot;@{foodItem.name}&quot;
                  android:textSize=&quot;12sp&quot;
                  android:fontFamily=&quot;@font/poppins&quot;/&gt;
          &lt;TextView
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;35dp&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/burger_title&quot;
                  android:layout_marginEnd=&quot;5dp&quot;
                  android:gravity=&quot;center&quot;
                  android:id=&quot;@+id/burger_price&quot;
                  android:layout_marginStart=&quot;5dp&quot;
                  app:layout_constraintStart_toEndOf=&quot;@id/special_price&quot;
                  android:textColor=&quot;#D0000000&quot;/&gt;
  
  &lt;!--                app:price=&quot;@{foodItem.price}&quot;--&gt;
  &lt;!--                app:specialPrice=&quot;@{foodItem.special_price}&quot;--&gt;
  &lt;!--                app:fontRes=&quot;@{foodItem.special ? font.POPPINS : font.POPPINS_BOLD}&quot;--&gt;
  
  
          &lt;TextView
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;35dp&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/burger_title&quot;
                  android:layout_marginEnd=&quot;5dp&quot;
                  android:gravity=&quot;center_vertical&quot;
                  android:layout_marginStart=&quot;5dp&quot;
                  android:id=&quot;@+id/special_price&quot;
                  android:textColor=&quot;#D0000000&quot;
                  android:visibility=&quot;gone&quot;
                  android:textStyle=&quot;normal&quot;
                  android:fontFamily=&quot;@font/poppins_bold&quot;/&gt;
  &lt;!--        app:setSpecialPrice=&quot;@{foodItem.special_price}&quot;--&gt;
  
  
          &lt;ImageView
                  android:layout_width=&quot;15dp&quot;
                  android:layout_height=&quot;15dp&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/burger_price&quot;
                  android:src=&quot;@drawable/ic_baseline_star_24&quot;
                  android:visibility=&quot;@{foodItem.hasRating ? View.GONE : View.VISIBLE}&quot;
                  android:id=&quot;@+id/rating_star&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  android:layout_marginStart=&quot;5dp&quot;
                  android:layout_marginBottom=&quot;10dp&quot;
                  app:layout_constraintBottom_toBottomOf=&quot;parent&quot;/&gt;
          &lt;TextView
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;15dp&quot;
                  android:layout_marginStart=&quot;5dp&quot;
                  android:gravity=&quot;center&quot;
                  android:textSize=&quot;12sp&quot;
                  android:visibility=&quot;@{foodItem.hasRating ? View.GONE : View.VISIBLE}&quot;
                  android:id=&quot;@+id/rating_count&quot;
                  app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/burger_price&quot;
                  android:text=&quot;@{foodItem.average_rating}&quot;
                  android:layout_marginBottom=&quot;10dp&quot;
                  app:layout_constraintStart_toEndOf=&quot;@id/rating_star&quot;/&gt;
          &lt;TextView
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;15dp&quot;
                  android:id=&quot;@+id/number_of_raters&quot;
                  android:textSize=&quot;12sp&quot;
                  android:visibility=&quot;@{foodItem.hasRating ? View.GONE : View.VISIBLE}&quot;
                  android:layout_marginStart=&quot;2dp&quot;
                  app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
                  app:layout_constraintStart_toEndOf=&quot;@id/rating_count&quot;
                  app:ratersCount=&quot;@{foodItem.number_of_raters}&quot;
                  android:layout_marginBottom=&quot;10dp&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/burger_price&quot;/&gt;
  
          &lt;ImageView android:layout_width=&quot;20dp&quot;
                     android:layout_height=&quot;20dp&quot;
                     android:layout_marginEnd=&quot;10dp&quot;
                     android:layout_marginTop=&quot;10dp&quot;
                     app:layout_constraintEnd_toEndOf=&quot;parent&quot;
                     app:layout_constraintTop_toTopOf=&quot;parent&quot;/&gt;
  
  
      &lt;/androidx.constraintlayout.widget.ConstraintLayout&gt;
  
  &lt;/layout&gt;
  
  </code></pre>
  <p><em><strong>FoodItem Adapter</strong></em></p>
  <pre><code>class FoodItemAdapter: ListAdapter&lt;Food ,
          FoodItemAdapter.ItemFoodViewHolder&gt;(DiffCallback) {
  
      override fun onCreateViewHolder(parent: ViewGroup , viewType: Int): ItemFoodViewHolder {
          return ItemFoodViewHolder(
              FoodItemBinding.inflate(LayoutInflater.from(parent.context),
              parent, false))
      }
  
      override fun onBindViewHolder(holder: ItemFoodViewHolder , position: Int) {
          val currentFood = getItem(position)
          holder.bind(currentFood)
      }
  
      class ItemFoodViewHolder(private var binding: FoodItemBinding): RecyclerView.ViewHolder(binding.root) {
          fun bind(food: Food) {
              binding.foodItem = food
              binding.executePendingBindings()
          }
      }
  
      object DiffCallback: DiffUtil.ItemCallback&lt;Food&gt;() {
          override fun areItemsTheSame(oldItem: Food , newItem: Food): Boolean {
              return oldItem === newItem
          }
  
          override fun areContentsTheSame(oldItem: Food , newItem: Food): Boolean {
              return oldItem.id == newItem.id
          }
      }
  }
  
  </code></pre>
  <p><em><strong>FoodCategory layout</strong></em></p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
  &lt;layout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
          xmlns:tools=&quot;http://schemas.android.com/tools&quot;&gt;
      &lt;data&gt;
          &lt;variable
                  name=&quot;foodCategory&quot;
                  type=&quot;com.example.e_commerceapp.models.FoodCategory&quot;/&gt;
      &lt;/data&gt;
  
      &lt;androidx.constraintlayout.widget.ConstraintLayout
              android:background=&quot;#fff&quot;
              android:layout_marginTop=&quot;5dp&quot;
              android:layout_marginBottom=&quot;5dp&quot;
              android:layout_width=&quot;match_parent&quot;
              android:layout_height=&quot;wrap_content&quot;&gt;
  
          &lt;TextView
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;wrap_content&quot;
                  android:layout_marginStart=&quot;16dp&quot;
                  android:id=&quot;@+id/category_title&quot;
                  android:layout_marginTop=&quot;16dp&quot;
                  android:text=&quot;@{foodCategory.title}&quot;
                  android:textColor=&quot;#2B2A2A&quot;
                  android:fontFamily=&quot;@font/poppins_bold&quot;
                  android:textSize=&quot;16sp&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintTop_toTopOf=&quot;parent&quot;/&gt;
  
          &lt;androidx.recyclerview.widget.RecyclerView
                  android:id=&quot;@+id/nestedRecyclerView&quot;
                  android:layout_width=&quot;match_parent&quot;
                  android:layout_height=&quot;wrap_content&quot;
                  android:layout_marginTop=&quot;4dp&quot;
                  app:setProducts=&quot;@{foodCategory.foods}&quot;
                  android:orientation=&quot;horizontal&quot;
                  app:layoutManager=&quot;androidx.recyclerview.widget.LinearLayoutManager&quot;
                  app:layout_constraintEnd_toEndOf=&quot;parent&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@+id/category_title&quot;
                  tools:itemCount=&quot;4&quot;
                  tools:listitem=&quot;@layout/food_item&quot;/&gt;
  
      &lt;/androidx.constraintlayout.widget.ConstraintLayout&gt;
  
  &lt;/layout&gt;
  </code></pre>
  <p><em><strong>FoodCategory Adapter</strong></em></p>
  <pre><code>class FoodCategoryAdapter: ListAdapter&lt;FoodCategory,
          FoodCategoryAdapter.CategoryFoodViewHolder&gt;(Companion) {
  
      private val viewPool = RecyclerView.RecycledViewPool()
  
      override fun onCreateViewHolder(parent: ViewGroup , viewType: Int): CategoryFoodViewHolder {
          return CategoryFoodViewHolder(FoodCategoryBinding.inflate(LayoutInflater.from(parent.context),
              parent, false))
      }
  
      override fun onBindViewHolder(holder: CategoryFoodViewHolder , position: Int) {
          val currentFoodCategory = getItem(position)
          holder.bind(currentFoodCategory)
      }
  
  
      inner class CategoryFoodViewHolder(private var binding: FoodCategoryBinding): RecyclerView.ViewHolder(binding.root) {
          fun bind(currentFoodCategory: FoodCategory?) {
              binding.foodCategory = currentFoodCategory
              binding.nestedRecyclerView.setRecycledViewPool(viewPool)
              binding.executePendingBindings()
          }
      }
  
      companion object: DiffUtil.ItemCallback&lt;FoodCategory&gt;() {
          override fun areItemsTheSame(oldItem: FoodCategory , newItem: FoodCategory): Boolean {
              return oldItem === newItem
          }
  
          override fun areContentsTheSame(oldItem: FoodCategory, newItem: FoodCategory): Boolean {
              return oldItem.id == newItem.id
          }
      }
  }
  </code></pre>
  <p><em><strong>The parent recycleView</strong></em></p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
  
  &lt;layout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
          xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
          xmlns:tools=&quot;http://schemas.android.com/tools&quot;
          tools:context=&quot;.products.overview.FoodOverviewFragment&quot;&gt;
      &lt;data&gt;
          &lt;variable
                  name=&quot;foodOverview&quot;
                  type=&quot;com.example.e_commerceapp.products.overview.FoodOverviewViewModel&quot;/&gt;
  
      &lt;/data&gt;
  
      &lt;androidx.constraintlayout.widget.ConstraintLayout
              android:background=&quot;@color/grey&quot;
              android:layout_width=&quot;match_parent&quot;
              android:layout_height=&quot;match_parent&quot;&gt;
  
          &lt;RelativeLayout
                  android:layout_width=&quot;match_parent&quot;
                  android:id=&quot;@+id/relative_layout&quot;
                  android:layout_height=&quot;105dp&quot;
                  android:elevation=&quot;8dp&quot;
                  android:layout_marginBottom=&quot;5dp&quot;
                  android:background=&quot;#fff&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintTop_toTopOf=&quot;parent&quot;
                  app:layout_constraintEnd_toEndOf=&quot;parent&quot;&gt;
  
              &lt;ImageView
                      android:layout_width=&quot;200dp&quot;
                      android:layout_marginTop=&quot;10dp&quot;
                      android:layout_height=&quot;35dp&quot;
                      android:id=&quot;@+id/logo_and_name&quot;
                      android:src=&quot;@drawable/compony_logo_and_name&quot;
                      android:layout_alignParentStart=&quot;true&quot;/&gt;
              &lt;ImageView
                      android:layout_width=&quot;wrap_content&quot;
                      android:layout_height=&quot;35dp&quot;
                      android:layout_marginTop=&quot;10dp&quot;
                      android:id=&quot;@+id/notifications&quot;
                      android:src=&quot;@drawable/ic_baseline_notifications_24&quot;
                      android:layout_alignParentEnd=&quot;true&quot;
                      android:paddingEnd=&quot;20dp&quot;
                      android:paddingStart=&quot;20dp&quot;/&gt;
              &lt;TextView
                      android:layout_width=&quot;match_parent&quot;
                      android:id=&quot;@+id/search&quot;
                      android:layout_marginTop=&quot;10dp&quot;
                      android:layout_marginStart=&quot;20dp&quot;
                      android:layout_marginEnd=&quot;20dp&quot;
                      android:background=&quot;@drawable/search_background&quot;
                      android:layout_below=&quot;@id/logo_and_name&quot;
                      android:gravity=&quot;center_vertical&quot;
                      android:layout_height=&quot;match_parent&quot;
                      android:layout_marginBottom=&quot;10dp&quot;
                      android:paddingEnd=&quot;10dp&quot;
                      android:paddingStart=&quot;10dp&quot;
                      android:text=&quot;@string/search_text&quot;
                      tools:ignore=&quot;RtlSymmetry&quot;
                      app:drawableEndCompat=&quot;@drawable/ic_baseline_search_24&quot;/&gt;
          &lt;/RelativeLayout&gt;
  
          &lt;ProgressBar
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;wrap_content&quot;
                  app:updateStatus=&quot;@{foodOverview.status}&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/relative_layout&quot;
                  app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintEnd_toEndOf=&quot;parent&quot;
                  android:id=&quot;@+id/progressbar&quot;/&gt;
          &lt;ImageView
                  android:layout_width=&quot;wrap_content&quot;
                  android:layout_height=&quot;wrap_content&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/relative_layout&quot;
                  app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintEnd_toEndOf=&quot;parent&quot;
                  android:id=&quot;@+id/noInternetImage&quot;/&gt;
  
          &lt;androidx.recyclerview.widget.RecyclerView
                  android:layout_width=&quot;0dp&quot;
                  android:id=&quot;@+id/foodCategory&quot;
                  android:clipToPadding=&quot;false&quot;
                  tools:itemCount=&quot;4&quot;
                  tools:listitem=&quot;@layout/food_category&quot;
                  app:layoutManager=&quot;androidx.recyclerview.widget.LinearLayoutManager&quot;
                  android:layout_height=&quot;0dp&quot;
                  app:listData=&quot;@{foodOverview.foodCategory}&quot;
                  app:layout_constraintTop_toBottomOf=&quot;@id/relative_layout&quot;
                  app:layout_constraintStart_toStartOf=&quot;parent&quot;
                  app:layout_constraintEnd_toEndOf=&quot;parent&quot;
                  app:layout_constraintBottom_toBottomOf=&quot;parent&quot;/&gt;
  
      &lt;/androidx.constraintlayout.widget.ConstraintLayout&gt;
  
  &lt;/layout&gt;
  </code></pre>