Цель состоит в том, чтобы получить viewHolders с различными параметрами ширины. Я добавил ItemDecoration для упрощения объяснения.
Попытка 1: Создание в RecyclerView.Adapter настраиваемого макета с LayoutParams установленным WRAP_CONTENT и TextView с рандомизированным textSize .
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val inflater = LayoutInflater.from(parent.context)
val newItem = ConstraintLayout(parent.context)
newItem.layoutParams = RecyclerView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
val currency_symbol_text = TextView(parent.context)
currency_symbol_text.text = "Test"
currency_symbol_text.textSize = Random.nextInt(10,40).toFloat()
return ViewHolder(newItem)
}
Ожидаемый результат: Каждый из ViewHolder рисуется с WIDTH и HEIGHT соответствующими параметрами макета.
Фактический результат: all ViewHolders ограничение на основе первого предоставленного макета
Вызов
adapter.notifyDataSetChanged()
делает то же самое, повторно создавая макеты разных размеров в тех же границах, что и они были инициализированы при первом вызове адаптера.
Возможно ли в recyclerView хранить ViewHolders с разными параметрами?