Sobes.tech
Junior

Jaké jsou implementace seznamů v Androidu?

sobes.tech AI

Odpověď od AI

V Androidu se používají následující hlavní implementace seznamů:

  • Model: ListView + Adapter: Zastaralý přístup, kde ListView zobrazuje prvky z Adapteru. Vyžaduje ruční optimalizaci výkonu (opětovné použití zobrazení).
  • Model: RecyclerView: Moderní, flexibilní a efektivní přístup. RecyclerView je zodpovědný za vykreslování, a LayoutManager řídí umístění prvků. Používá mechanismus opětovného použití ViewHolder.
  • Model: LazyColumn/LazyRow: V Jetpack Compose se pro zobrazování seznamů používají funkce composable LazyColumn (pro svislé seznamy) a LazyRow (pro vodorovné seznamy). Vykreslují pouze viditelné prvky na obrazovce, zajišťují vysoký výkon.
Implementace Účel Vlastnosti Výhody Nevýhody
ListView Zobrazení seznamu prvků Zastaralé, vyžaduje Adapter Snadné použití pro základní seznamy Nízký výkon bez optimalizace, méně flexibilní
RecyclerView Flexibilní a efektivní zobrazení velkých seznamů Vyžaduje Adapter a LayoutManager, používá ViewHolder Vysoký výkon, flexibilní možnosti konfigurace, animace Vyžaduje více kódu pro nastavení
LazyColumn/LazyRow (Compose) Zobrazení seznamů v Jetpack Compose Vykresluje pouze viditelné prvky Deklarativní syntaxe, vysoký výkon, snadná integrace Pouze pro Jetpack Compose

Příklad použití RecyclerView v XML rozložení:

<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Příklad použití LazyColumn v Jetpack Compose:

// LazyColumn pro svislý seznam
@Composable
fun MyLazyColumn() {
    val items = listOf("Item 1", "Item 2", "Item 3") // Příklad dat

    LazyColumn {
        items(items) { item ->
            Text(text = item) // Composable pro zobrazení každého prvku
        }
    }
}