TGViewer
Next Level Dev Next Level Dev @andrdevnotes · 619 subscribers
Post #125 760
Как разговаривать с адаптером, не привлекая внимания санитаров

💡 Представим, что вы хотите с помощью RecyclerView отобразить список, в котором будет несколько разных способов отображения элементов: в одном будет чекбокс, в другом картинка, в третьем картинка и текст, в остальных ещё что-то другое. Как это сделать ❓

Адаптеру надо как-то объяснить, сколько типов отображения у вас есть, и чем они отличаются.

1️⃣ Начинаем мы ему объяснять с переопределения метода getItemViewType, который вызывается автоматически в начале отрисовки каждого элемента списка. В этом методе есть аргумент position, и именно здесь вы решаете, какой тип отображения будет на каждой position списка. Метод возвращает целое число, по которому мы и будем дальше определять тип отображения.

2️⃣ Потом адаптер вызовет метод onCreateViewHolder, у которого есть целочисленный аргумент viewType — тот самый, логику для вычисления которого мы переопределили в предыдущем методе. А из этого метода вы на основании полученного viewType должны вернуть соответствующий этому типу отображения ViewHolder — то есть объяснить адаптеру, какие вьюхи вам для каждого типа отображения понадобятся.

3️⃣ Теперь настанет очередь onBindViewHolder, в котором аргументом будет являться уже вьюхолдер и position. Вы должны определить, какой это из ваших вьюхолдеров (здравствуй, полиморфизм), взять из него соответствующие вьюхи и наполнить их информацией из элемента на этой position.

🎬 Дело сделано! Мы определили для конкретной position конкретный viewType, сопоставили с вьюхолдером и наполнили его вьюхи. И так адаптер пройдётся по всем элементам и отобразит их так, как мы ему сказали.

🤌🏼 Под каждый viewType обычно заводят свою константу с понятным названием в адаптере, чтоб потом не путаться в числах.

P.S.: хотите видео-разбор типичных ошибок при организации списков? 10 реакций этому посту и снимаю 😉
  • 👍 16
  • 🔥 4
  • 👏 1
More from @andrdevnotes
  1. Aug 9, 2026Почему ИИ так заходит российскому бизнесу? Во-первых – бум ИИ сейчас, конечно, не только в…
  2. Jul 10, 2026Post #201
  3. Jul 10, 2026Илья Аристотель на связи. Всегда можно найти 1001 причину для "не получится" и аргументиро…
  4. Jul 8, 2026Агентик раг: спасёт ли эта соломинка? 💪 Итак, агентик раг. В чём его сила? Ты даёшь ему з…
  5. Jul 1, 2026Не повторяйте мои ошибки с RAG Если вы вдруг подумали, что я тут вам академические тексты…
  6. Jun 18, 2026Как заставить ллм отвечать по методичке? Есть много ситуаций, когда вы хотите, чтобы ллм о…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →