Sobes.tech
Назад к вопросам
Junior — Middle
72

Каким образом можно создать список, содержащий десять различных элементов или типов ячеек?

Ответ от нейросети

sobes.tech AI

Для создания списка с десятью различными элементами или типами ячеек в Android обычно используют RecyclerView с несколькими типами ViewHolder.

Основные шаги:

  1. В адаптере переопределить метод getItemViewType(int position), возвращая уникальный тип для каждого элемента.
  2. В onCreateViewHolder создавать разные ViewHolder в зависимости от типа.
  3. В onBindViewHolder заполнять данные в соответствии с типом ViewHolder.

Пример:

class MultiTypeAdapter(private val items: List<Item>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    override fun getItemViewType(position: Int): Int {
        return items[position].type // тип от 0 до 9
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        return when(viewType) {
            0 -> Type0ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_type0, parent, false))
            1 -> Type1ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_type1, parent, false))
            // ... до 9
            else -> throw IllegalArgumentException("Unknown view type")
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when(holder) {
            is Type0ViewHolder -> holder.bind(items[position])
            is Type1ViewHolder -> holder.bind(items[position])
            // ...
        }
    }

    override fun getItemCount() = items.size
}

Таким образом можно гибко отображать разные типы ячеек в одном списке.