Горизонтальный RecyclerView с двумя рядами и разной ширинойAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Горизонтальный RecyclerView с двумя рядами и разной шириной

Сообщение Anonymous »

Я создаю этот тип дизайна, используя горизонтальный RecyclerView с GridLayoutManager в Android.
Нужен похожий дизайн
Изображение

Текущий выход
Изображение

Код декларации RecyclerView

Код: Выделить всё

val layoutManager: RecyclerView.LayoutManager =
GridLayoutManager(requireContext(), 2, GridLayoutManager.HORIZONTAL, false)
binding.rvStoreTypesHome.setLayoutManager(layoutManager)
binding.rvStoreTypesHome.adapter = StoreTypesAdapter(requireContext())
Адаптер

Код: Выделить всё

class StoreTypesAdapter(val context: Context) :
RecyclerView.Adapter() {
var width = 0

init {
width = context.getDeviceWidth()
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding =
StoreTypesAdapterBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}

@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: ViewHolder, position: Int) {

val layoutParams = holder.binding.conSTAdapter.layoutParams
layoutParams.width = if (holder.adapterPosition % 2 == 0) {
(width / 2.5).toInt()
} else {
(width / 3.5).toInt()
}
layoutParams.height = ConstraintLayout.LayoutParams.WRAP_CONTENT
holder.binding.conSTAdapter.layoutParams = layoutParams
holder.binding.tvStoreNameSTAdapter.text = "Store Name $position"
}

override fun getItemCount(): Int {
return 10
}

inner class ViewHolder(var binding: StoreTypesAdapterBinding) :
RecyclerView.ViewHolder(binding.root)

}
Задайте ширину динамически, используя ширину устройства, но отображая только ширину первой
позиции. Текст 0,1,2 — это позиция, в которую я попадаю

Код: Выделить всё

onBindViewHolder
.


Подробнее здесь: https://stackoverflow.com/questions/785 ... rent-width
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»