TGViewer
Android Mobile | YeaHub Android Mobile | YeaHub @yeahub_android_mobile · 431 subscribers
Post #119 79
#полезное
🤓 Представим, что вы хотите реализовать список сессий конференции и разделить их по дате. Кажется, что реализация такой UI-модели будет довольно удачной идеей:


data class SessionsUiModel(
val sessionGroups: Map<String, List<Session>>
)


В Android это будет работать отлично, так как функция mapOf создает LinkedHashMap, который сохраняет порядок вставки элементов. И на самом деле все будет точно так же работать, если в iOS используется Compose Multiplatform. Однако если UI будет нативным на каждой платформе, то вы столкнетесь с проблемой.

При интеропе Kotlin-кода в Objective-C ваш Map превратится в NSDictionary (или Dictionary в Swift), который не гарантирует порядок вставки элементов.

Таким образом, не стоит полагаться на порядок элементов в Map, так как этот интерфейс не может гарантировать его. Предпочитайте использовать списки в UI-моделях, чтобы обеспечить одинаковое поведение на всех платформах:


data class SessionsUiModel(
val sessions: List<SessionItem>
)

sealed interface SessionItem {
data class Header(val header: String) : SessionItem
data class Item(val session: Session) : SessionItem
}


Если тема отличий в поведении между платформами в KMP интересна, то ставьте реакции и сделаю еще посты по теме.

👉Новости 👉База вопросов
More from @yeahub_android_mobile
  1. Oct 12, 2026#Собес #viewholder #recycling #oncreateviewholder 🤔 Как RecyclerView рендерит элементы? �…
  2. Oct 9, 2026#podcast #всё 📚 TeachMeSkills IT-школа Это серия выпусков от "TeachMeSkills Школа програм…
  3. Oct 8, 2026#Собес #docker_volumes #persistent_data #storage 🤔 Какова цель томов в Docker? 💬 Кратко:…
  4. Oct 7, 2026#Собес #viewholder #recycling #oncreateviewholder 🤔 Как RecyclerView рендерит элементы? �…
  5. Oct 5, 2026#Собес #service_main_thread #background #anr 🤔 В каком потоке по умолчанию работает Servi…
  6. Oct 2, 2026#tool #графы 📚 Терялся в собственном коде? Встречай Gitvizz, инструмент, который мгновенн…
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 →