Wiem, że RecyclerView
to zastąpiło funkcjonalność starego ListView
i GridView
. Szukam bardzo podstawowego przykładu, który pokazuje minimalną konfigurację siatki przy użyciu RecyclerView
. Nie szukam długich wyjaśnień w stylu samouczka, tylko minimalny przykład. Wyobrażam sobie, że najprostsza siatka naśladująca stary GridView składałaby się z następujących funkcji:
- wiele komórek w wierszu
- pojedynczy widok w każdej komórce
- reaguje na zdarzenia kliknięcia
Odpowiedzi:
Krótka odpowiedź
Dla tych, którzy są już zaznajomieni z tworzeniem
RecyclerView
listy , dobrą wiadomością jest to, że tworzenie siatki jest w dużej mierze takie samo. Podczas konfigurowania używaszGridLayoutManager
zamiast zamiast .LinearLayoutManager
RecyclerView
Jeśli potrzebujesz więcej pomocy, sprawdź poniższy przykład.
Pełny przykład
Poniżej znajduje się minimalny przykład, który będzie wyglądał jak na poniższym obrazku.
Zacznij od pustej aktywności. Wykonasz następujące zadania, aby dodać
RecyclerView
siatkę. Wszystko, co musisz zrobić, to skopiować i wkleić kod w każdej sekcji. Później możesz dostosować go do swoich potrzeb.Zaktualizuj zależności Gradle
Upewnij się, że w
gradle.build
pliku aplikacji znajdują się następujące zależności :Możesz zaktualizować numery wersji do najnowszej .
Utwórz układ aktywności
Dodaj
RecyclerView
do swojego układu xml.Activity_main.xml
Utwórz układ komórek siatki
Każda komórka w naszej
RecyclerView
siatce będzie miała tylko jedenTextView
. Utwórz nowy plik zasobów układu.recyclerview_item.xml
Utwórz adapter
RecyclerView
Wymaga adaptera do wypełnienia widoki w każdej komórce z danymi. Utwórz nowy plik Java.MyRecyclerViewAdapter.java
Notatki
GridView
i jest powszechną potrzebą. Możesz usunąć ten kod, jeśli go nie potrzebujesz.Zainicjuj RecyclerView w działaniu
Dodaj następujący kod do swojej głównej działalności.
MainActivity.java
Notatki
ItemClickListener
, co zdefiniowaliśmy w naszym adapterze. To pozwala nam obsługiwać zdarzenia kliknięcia komórki wonItemClick
.Skończone
Otóż to. Powinieneś być teraz w stanie uruchomić swój projekt i uzyskać coś podobnego do obrazu na górze.
Dziać się
Zaokrąglone rogi
Automatyczne dopasowanie kolumn
Dalsze badanie
źródło
recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));
Chociaż podoba mi się odpowiedź Suragcha i doceniam ją , chciałbym zostawić notatkę, ponieważ odkryłem, że kodowanie Adapter (
MyRecyclerViewAdapter
) w celu zdefiniowania i ujawnienia metody ListeneronItemClick
nie jest najlepszym sposobem, aby to zrobić, ponieważ nie używa się enkapsulacji klas prawidłowo. Dlatego proponuję, aby Adapter mógł obsługiwać operacje Listening wyłącznie (to jest jego cel!) I oddzielać te od Działania, które korzysta z Adaptera (MainActivity
). Oto jak ustawiłbym klasę adaptera:MyRecyclerViewAdapter.java
Pamiętaj, że
onItemClick
metoda zdefiniowana wMyRecyclerViewAdapter
tym miejscu to miejsce, w którym chcesz zakodować swoje zadania dla otrzymanego zdarzenia / akcji.Aby dokończyć tę transformację, należy wprowadzić tylko niewielką zmianę: działanie nie musi
MyRecyclerViewAdapter.ItemClickListener
już być wdrażane , ponieważ teraz jest to całkowicie wykonywane przez adapter . Byłaby to ostateczna modyfikacja:MainActivity.java
źródło
Activity
. Bo tylko to jest kliknięcie słuchacz może wiedzieć na tematActivity
poglądów i innychFragments
,Activities
itp Adapter może tylko wysłać kliknij zdarzenia do górnego poziomu. Powinien mieć interfejsItemClickListener
z tyloma zdarzeniami, ile może wygenerować widok adaptera zdarzeń. To rozwiązanie zostało napisane jeszcze wcześniej: stackoverflow.com/a/40563598/2914140 .Musisz ustawić menedżera układu recyclinglerview na tryb Gridlayout, w tym celu Po prostu zmień kod, kiedy chcesz Ustaw swój menedżer układu RecyclerView:
Uwaga: zamień żądaną liczbę kolumn na ### HELP ###
źródło