Android | Kotlin просмотр корзины, а настраиваемый адаптер создает только одну строку - PullRequest
1 голос
/ 05 мая 2020

У меня проблема с моим настраиваемым адаптером (я думаю). Я получаю свои данные с помощью модернизации, и все идет нормально, как только я получаю данные, я вызываю другую функцию для заполнения моего представления корзины, как показано ниже.

Я очень признателен, если бы кто-нибудь мог мне помочь в этом ...

    private fun createMyOrdersTable(myOrders: List<OrderAssigned>){
        val ordersCount = myOrders.size
        val rv = myorder_rv
        rv.layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
        val ordersList = ArrayList<OrderAssigned>()
        if (ordersCount > 0){
            myOrders.forEach {
                ordersList.add(it)
            }
//            order.add(OrderAssigned("123","123213","123123","1231231","123123","123123","123123","123123"))
//            order.add(OrderAssigned("123","123213","123123","1231231","123123","123123","123123","123123"))
            println(ordersList)
            val adapter = CustomAdapterMyOrders(ordersList)
            rv.adapter = adapter
        }else{
            Toast.makeText(context, "You don't have any assigned order", Toast.LENGTH_LONG).show()
        }
    }

А это мой адаптер:

package com.davesm.swiftdemexico

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.davesm.swiftdemexico.Model.OrderAssigned
import kotlinx.android.synthetic.main.myorders_layout.view.*

class CustomAdapterMyOrders(private val orders: ArrayList<OrderAssigned>): RecyclerView.Adapter<CustomAdapterMyOrders.ViewHolder>() {

    inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
        val orderID = itemView.orderID!!
        val clientName =  itemView.clientName!!
        val no_rem = itemView.orderRem!!
        val orderDate = itemView.orderDate!!
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        //
        val v = LayoutInflater.from(parent?.context).inflate(R.layout.myorders_layout, parent, false)
        return ViewHolder(v);
    }

    override fun getItemCount(): Int {
        //
        return orders.size
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        val model = orders[position]
        holder.orderID.text = "ID: "+model.id
        holder.clientName.text = model.nom_cte
        holder.no_rem.text = "Remisión"+model.no_rem
        holder.orderDate.text = model.falta_rem
    }
}

Когда я запускаю свое приложение, он показывает только один "row", который является представлением карточки, даже когда я добавляю более одного элемента в foreach в "createMyOrdersTable". Я пытался добавить его вручную, как в закомментированном коде, но все еще не работал, я отправляю данные как ArrayList.

Вот файлы xml для представлений:

myorder_layout. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/myorder_rv"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="1dp"
        android:layout_marginTop="1dp"
        android:layout_marginEnd="1dp"
        android:layout_marginBottom="1dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Это макет моих элементов. myorders_layout. xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.cardview.widget.CardView
        android:id="@+id/cardView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginTop="5dp"
        android:layout_marginEnd="10dp"
        app:cardCornerRadius="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
        <LinearLayout
            android:padding="10dp"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/rounder_button_primary_color"
            tools:ignore="MissingConstraints">

            <TextView
                android:id="@+id/orderID"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Order ID"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Large" />
            <TextView
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
                android:text="Client Name"
                android:id="@+id/clientName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/orderRem"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Remisión" />

            <TextView
                android:id="@+id/orderDate"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Date" />
        </LinearLayout>
    </androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

1 Ответ

1 голос
/ 06 мая 2020

Он не создает 1 строку, он создает много, но все они имеют высоту экрана.

Измените макет элемента, чтобы использовать wrap_content для высоты

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
...