0Pricing
Android Academy · Lekcja

Podstawy RecyclerView

Proszę efektywnie wyświetlać duże listy za pomocą RecyclerView. Proszę utworzyć Adapter i ViewHolder oraz połączyć dane za pomocą ViewBinding.

Podstawy RecyclerView to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 2 z 6. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 6 lekcji w sumie.

Dlaczego RecyclerView?

RecyclerView to standardowy sposób wyświetlania przewijanej listy elementów w systemie Android.

W przeciwieństwie do starszego ListView, RecyclerView:

  • Wielokrotnie wykorzystuje widoki podczas przewijania — tworzy tylko tyle widoków, ile mieści się na ekranie
  • Obsługuje listy pionowe, poziome oraz siatki
  • Można go w dużym stopniu dostosować za pomocą LayoutManagers

Architektura RecyclerView

RecyclerView potrzebuje do działania trzech elementów:

  • RecyclerView — widżet w pliku XML układu
  • Adapter — wiąże dane z widokami elementów
  • ViewHolder — przechowuje odwołania do widoków znajdujących się w każdym elemencie listy

Adapter tworzy obiekty ViewHolder i wiąże z nimi dane podczas przewijania listy przez użytkownika.

Dodawanie RecyclerView do XML

Dodaj widżet do układu i zadeklaruj zależność w pliku build.gradle:

<!-- In res/layout/activity_main.xml -->
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- app/build.gradle dependencies: -->
<!-- implementation 'androidx.recyclerview:recyclerview:1.3.2' -->

Układ elementu

Utwórz osobny plik XML dla każdego elementu listy. Na przykład res/layout/item_fruit.xml:

<!-- res/layout/item_fruit.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvCalories"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp" />

</LinearLayout>

Model danych

Zdefiniuj klasę danych reprezentującą każdy element listy:

data class Fruit(
    val name: String,
    val calories: Int
)

Tworzenie adaptera

Adapter wiąże dane z układem elementu. Ma trzy kluczowe metody:

  • onCreateViewHolder — rozwija plik XML elementu
  • onBindViewHolder — wypełnia danymi pojedynczy element
  • getItemCount — zwraca łączną liczbę elementów

Implementacja adaptera

Kompletny, minimalny adapter RecyclerView:

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class FruitAdapter(
    private val fruits: List<Fruit>
) : RecyclerView.Adapter<FruitAdapter.ViewHolder>() {

    class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        val tvName: TextView = view.findViewById(R.id.tvName)
        val tvCalories: TextView = view.findViewById(R.id.tvCalories)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_fruit, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val fruit = fruits[position]
        holder.tvName.text = fruit.name
        holder.tvCalories.text = "${fruit.calories} kcal"
    }

    override fun getItemCount() = fruits.size
}

Konfiguracja w Activity

Połącz RecyclerView, Adapter i LayoutManager w swoim Activity:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    val fruits = listOf(
        Fruit("Apple", 95),
        Fruit("Banana", 105),
        Fruit("Cherry", 50),
        Fruit("Mango", 202)
    )

    val adapter = FruitAdapter(fruits)

    binding.recyclerView.apply {
        this.adapter = adapter
        layoutManager = LinearLayoutManager(this@MainActivity)
    }
}

GridLayoutManager

Zmień LayoutManager, aby wyświetlać siatkę zamiast listy jednokolumnowej:

  • LinearLayoutManager — lista pionowa lub pozioma
  • GridLayoutManager(context, spanCount) — siatka z N kolumnami
  • StaggeredGridLayoutManager — nieregularna siatka w stylu Pinteresta

Szybkie sprawdzenie

Jaką funkcję pełni ViewHolder w adapterze RecyclerView?

Podsumowanie: podstawy RecyclerView

Potrafisz teraz wydajnie wyświetlać listy:

  • RecyclerView ponownie wykorzystuje widoki, aby zwiększyć wydajność
  • Trzy części: widżet RecyclerView, Adapter i ViewHolder
  • XML elementu definiuje wygląd pojedynczego wiersza lub karty
  • Adapter łączy dane z widokami w metodzie onBindViewHolder
  • LayoutManager steruje układem listy, siatki lub nieregularnej siatki

Dalej: dodawanie obsługi kliknięć elementów listy.

Często zadawane pytania

Czy lekcja „Podstawy RecyclerView” jest bezpłatna?

Tak — pełny tekst „Podstawy RecyclerView” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 6 lekcji w sumie.

Co nauczysz się w „Podstawy RecyclerView”?

Proszę efektywnie wyświetlać duże listy za pomocą RecyclerView. Proszę utworzyć Adapter i ViewHolder oraz połączyć dane za pomocą ViewBinding. Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 6.

Ile czasu zajmuje lekcja „Podstawy RecyclerView”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kolekcje w Kotlinie
  2. Podstawy RecyclerView
  3. Obsługa kliknięć w RecyclerView
  4. SharedPreferences
  5. Preferencje DataStore
  6. Adaptery i DiffUtil
← Powrót do Android Academy