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 elementuonBindViewHolder— wypełnia danymi pojedynczy elementgetItemCount— 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 poziomaGridLayoutManager(context, spanCount)— siatka z N kolumnamiStaggeredGridLayoutManager— 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
- Kolekcje w Kotlinie
- Podstawy RecyclerView
- Obsługa kliknięć w RecyclerView
- SharedPreferences
- Preferencje DataStore
- Adaptery i DiffUtil