В этой части моего приложения я пытаюсь добавить n (количество) текстовых представлений на основе количества заказов в линейный макет внутри элемента представления переработчика, но проблема в том, что текстовые представления иногда не отображаются, и я думаю, что причина это может быть связано с тем, что текстовые представления добавляются в цикле при создании элемента представления переработчика
это макет позиции моего заказа
Этот класс MyOrderAdapter, внутри метода привязки viewHolder, я просматриваю список продуктов и создаю TextView для каждого имени заказа, а затем добавляю его в productNamesContainer контейнер Linearlayout
>
class MyOrderAdapter : RecyclerView.Adapter() { частный val diffCallback = объект: DiffUtil.ItemCallback() { переопределить удовольствие areItemsTheSame( старыйItem: MyOrderItemModel, новыйItem: MyOrderItemModel ): Логическое значение { вернуть oldItem.orderID == newItem.orderID } переопределить удовольствие areContentsTheSame( старыйItem: MyOrderItemModel, новыйItem: MyOrderItemModel ): Логическое значение { вернуть старыйItem == новыйItem } } val asyncListDiffer = AsyncListDiffer(this, diffCallback) переопределить удовольствие onCreateViewHolder (родитель: ViewGroup, viewType: Int): ViewHolder { val myOrderItemBinding: MyOrderItemBinding = MyOrderItemBinding.inflate( LayoutInflater.from(parent.context), родительский, ложный ) вернуть ViewHolder (myOrderItemBinding) } переопределить удовольствие onBindViewHolder(держатель: ViewHolder, позиция: Int) { val itemModel: MyOrderItemModel = asyncListDiffer.currentList[позиция] Holder.bind(Модель элемента) } переопределить удовольствие getItemCount(): Int { вернуть asyncListDiffer.currentList.size } внутренний класс ViewHolder (частная привязка val: MyOrderItemBinding): RecyclerView.ViewHolder(binding.root) { забавная привязка (myOrderItemModel: MyOrderItemModel) { val layoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT ) // Устанавливаем значения полей в пикселях valmarginStart =binding.root.resources.getDimensionPixelSize(R.dimen.my_orders_text_views_margin_start) valmarginTop =binding.root.resources.getDimensionPixelSize(R.dimen.my_orders_text_views_margin_top) valmarginEnd =binding.root.resources.getDimensionPixelSize(R.dimen.my_orders_text_views_margin_end) valmarginBottom =binding.root.resources.getDimensionPixelSize(R.dimen.my_orders_text_views_margin_bottom) // Просматриваем список продуктов for (продукт в myOrderItemModel.productList) { val ProductNameTextView = TextView(binding.root.context).apply { текст = Product.ProductName размер эллипса = TextUtils.TruncateAt.END макслинес = 2 setTextColor(ContextCompat.getColor(context, R.color.black)) setTextSize(TypedValue.COMPLEX_UNIT_PX, resources.getDimension(R.dimen._12ssp)) setTypeface(гарнитура, Typeface.BOLD) макетParams.setMargins(marginStart, MarginTop, MarginEnd, MarginBottom) } привязка.productNamesContainer.addView(productNameTextView, LayoutParams) } дата вал: Дата? = когда (myOrderItemModel.orderStatus) { «ORDERED» -> myOrderItemModel.orderDate!! «УПАКОВАННО» -> myOrderItemModel.packedDate!! «ОТПРАВЛЕНО» -> myOrderItemModel.shippedDate!! «ДОСТАВЛЕНО» -> myOrderItemModel.deliveredDate!! «ОТМЕНЕНО» -> myOrderItemModel.cancelledDate!! еще -> { нулевой } } val simpleDateFormat = SimpleDateFormat("EEE, d MMM гггг", Locale.ENGLISH) val formattedDate = simpleDateFormat.format(дата!!) привязка.orderDeliveredDate.text = "${myOrderItemModel.orderStatus} на " + форматированная дата if (myOrderItemModel.orderStatus == "ОТМЕНЕНО") { привязка.orderIndicator.imageTintList = ColorStateList.valueOf( ContextCompat.getColor( привязка.корневой.контекст, R.color.btnRed ) ) } еще { привязка.orderIndicator.imageTintList = ColorStateList.valueOf( ContextCompat.getColor( привязка.корневой.контекст, R.color.success ) ) } // привязка.ratingBar.rating = myOrderItemModel.productRating привязка.root.setOnClickListener {представление -> findNavController(view).navigate( MyOrdersFragmentDirections.actionNavMyOrdersToOrderDetailsFragment( мояордеритеммодель ) ) } } } } результат
