Recenze

Adaptéry v Androidu: Krásné „servírování“ dat / Habr

Ve vývoji pro Android adaptér — je komponenta, která slouží jako most mezi zdrojem dat (například seznamem položek) a prvkem uživatelského rozhraní (například seznamem nebo mřížkou). Transformuje každou datovou položku do vizuální reprezentace, kterou uživatel vidí na obrazovce.

Představte si, že jste v restauraci a kuchyně je vaším zdrojem dat, který připravuje různá jídla. Adaptérem v této analogii je číšník, který bere každé jídlo z kuchyně a krásně ho servíruje ke stolu. Nevidíte surové ingredience ani nepořádek v kuchyni, vidíte pouze krásně prezentované jídlo. Totéž platí pro Android: adaptér převádí nezpracovaná data do uživatelsky přívětivého formátu.

Jak adaptér funguje v systému Android

  1. Zdroj dat:
    • Adaptér získává data z nějakého zdroje, například z pole, databáze nebo seznamu objektů (například seznamu kontaktů nebo obrazových souborů).
    • Tato data se obvykle předávají adaptéru jako kolekce nebo pole, které pak používá k naplnění každého prvku v komponentě uživatelského rozhraní.
  2. Zobrazení (komponenta uživatelského rozhraní):
    • Adaptéry se používají s určitými komponentami uživatelského rozhraní v systému Android, které zobrazují opakující se položky, jako například ListView, GridView, RecyclerView a Spinner.
    • Hlavním úkolem adaptéru je vzít každý datový prvek a vytvořit pro něj odpovídající „pohled“ (například řádek v seznamu nebo dlaždici v mřížce).
  3. Vazba dat k pohledům:
    • Hlavní rolí adaptéru je vázat data na zobrazení. Například pokud máte seznam jmen, adaptér pro každé jméno vytvoří textové zobrazení a umístí ho do ListView nebo RecyclerView.
  4. Vytvořte rozvržení pro každý prvek:
    • Adaptéry často vytvářejí pro každou položku nové pohledy, což zahrnuje „nafukování“ rozvržení. „Nafukování“ znamená přeměnu souboru XML s rozvržením na skutečný objekt na obrazovce systému Android. Adaptér tedy vezme rozvržení, které vytvoříte (například pro každý řádek v seznamu), a naplní ho daty.

Typy adaptérů v systému Android

V systému Android existuje několik typů adaptérů, z nichž každý se používá pro jiné účely a komponenty uživatelského rozhraní.

ArrayAdapter

  • Toto je jeden z nejjednodušších adaptérů a používá se, když máte jednoduchý seznam prvků, například pole nebo seznam řetězců.
  • ArrayAdapter dokáže automaticky převést každý prvek pole na prvek TextView v ListView nebo Spinner.

příkladŘekněme, že máte pole barev [„Červená“, „Modrá“, „Zelená“]. Pomocí ArrayAdapteru můžete zobrazit každou barvu jako položku v seznamu, aniž byste museli vytvářet vlastní rozvržení zobrazení.

Základní adaptér

  • BaseAdapter je flexibilnější a přizpůsobitelnější adaptér pro seznamy a mřížky, když potřebujete větší kontrolu nad rozvržením každé položky.
  • Můžete přepsat metody jako getView(), getCount() a getItem() a ručně tak ovládat, jak se jednotlivé položky seznamu zobrazují.

příkladPředstavte si, že chcete, aby každá položka seznamu obsahovala obrázek a text. BaseAdapter vám umožňuje vytvořit vlastní rozvržení pro každou položku a přidat obrázek vedle textu.

RecyclerView.Adapter

  • RecyclerView je efektivnější a modernější náhrada za ListView a GridView.
  • Na rozdíl od jiných zobrazení vyžaduje RecyclerView svůj vlastní specifický typ adaptéru – RecyclerView.Adapter .
  • Používá vzorec ViewHolder pro zlepšení výkonu opětovným použitím pohledů při rolování namísto vytváření nových pokaždé.
  • RecyclerView.Adapter je vysoce přizpůsobitelný a umožňuje vytvářet složité rozvržení položek, animací a dalších prvků.
Přečtěte si více
Krůtí filet od výrobce Indychka | Pouze kvalitní krůtí maso

příkladPokud vytváříte zpravodajskou aplikaci a potřebujete seznam položek, kde každá položka má název, obrázek a popis, je RecyclerView.Adapter ideální, protože vám umožňuje efektivněji zpracovávat složité rozvržení a velké množství dat.

CursorAdapter

  • CursorAdapter se používá při práci s daty z databáze, jako jsou data načtená pomocí SQLite nebo poskytovatele obsahu.
  • Pracuje s objekty Cursor, které reprezentují řádky z databázového dotazu.
  • CursorAdapter je obzvláště užitečný pro načítání dat přímo z databáze, protože automaticky spravuje životní cyklus Cursoru.

příkladV aplikaci pro kontakty, kde načítáte jména a čísla kontaktů z databáze, může CursorAdapter pomoci s načtením těchto záznamů přímo, aniž byste je museli ručně procházet.

Základní metody v adaptérech

  • getCount() :
    • Vrátí počet prvků ve zdroji dat.
    • Vrátí samotný datový prvek na dané pozici.
    • Vrátí jedinečné ID pro element na zadané pozici (užitečné pro sledovací elementy).
    • Toto je nejdůležitější metoda, která definuje prezentaci každého prvku.
    • Parametr position určuje, který prvek se má zobrazit, a convertView pomáhá znovu použít staré pohledy pro zlepšení výkonu.

    Jak adaptér zlepšuje výkon?

    Vytvoření nového zobrazení pro každou položku v seznamu nebo mřížce může být pomalé a náročné na paměť. Adaptéry zlepšují výkon tím, že opětovné použití pohledů.

    1. Opětovné použití pohledů pomocí convertView:
      • Parametr convertView metody getView() obsahuje starý pohled, který se již nepoužívá. Místo vytváření nového pohledu můžete convertView znovu použít pouhou změnou dat uvnitř něj.
      • Tento přístup eliminuje nákladný proces opakovaného nasazení rozvržení a šetří paměť.
    2. Vzor držáku zobrazení:
      • Tento vzor se často používá s RecyclerView.Adapter a BaseAdapter. Místo pokaždé, když se vyhledávají zobrazení, používá třída ViewHolder k ukládání podřízených zobrazení do mezipaměti, jako jsou textová nebo obrázková zobrazení.
      • Při opakovaném použití zobrazení ViewHolder pomáhá rychle aktualizovat data bez nutnosti opětovného vyhledávání zobrazení, což šetří čas při každém obnovení.

    Abychom to shrnuli

    • Adaptér v systému Android váže data k zobrazením, zejména u komponent uživatelského rozhraní, které zobrazují opakující se prvky, jako jsou seznamy a mřížky.
    • Různé adaptéry ( ArrayAdapter , BaseAdapter , RecyclerView.Adapter , CursorAdapter ) se používají k různým účelům: od jednoduchých seznamů až po složité zdroje dat.
    • Hlavní úlohou adaptéru je „rozvinout“ rozvržení pro každý prvek a navázat k němu data s využitím technik opětovného použití, aby byla zajištěna efektivita a dobrý výkon. Pro ty, kteří se chtějí ponořit do struktury OOP vzorů používaných v Android Adapteru, vítejte na palubě, brzy připravím nový článek, nebude nudný.
      Pro ty, kteří už základy znají a chtějí být „na špici“, vysvětlím, jak nahradit Adapter + Recycler v implementaci Jetpack Compose.
    • vývoj pro Android
    • adaptéry

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Back to top button