Kilka razy zrobiłem listę elementów za pomocą Androida RecyclerView
, ale jest to dość skomplikowany proces. Przeglądanie jednego z licznych tutoriali online ( to , to i to są dobre), ale szukam przykładowych kości, które mogę skopiować i wkleić, aby szybko rozpocząć pracę. Potrzebne są tylko następujące funkcje:
- Układ pionowy
- Pojedynczy TextView w każdym wierszu
- Reaguje na zdarzenia kliknięcia
Ponieważ chciałem tego kilka razy, w końcu zdecydowałem się udzielić odpowiedzi poniżej, aby móc się przydać w przyszłości.
android
android-recyclerview
Suragch
źródło
źródło
Odpowiedzi:
Poniżej znajduje się minimalny przykład, który będzie wyglądał jak na poniższym obrazku.
Zacznij od pustej czynności. Wykonasz następujące zadania, aby dodać RecyclerView. 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 najbardziej aktualnych . Użyj
compile
zamiast,implementation
jeśli nadal używasz Android Studio 2.x.Utwórz układ zajęć
Dodaj
RecyclerView
do układu XML.activity_main.xml
Utwórz układ wierszy
Każdy wiersz w naszym
RecyclerView
będzie miał tylko jedenTextView
. Utwórz nowy plik zasobów układu.recyclinglerview_row.xml
Utwórz adapter
RecyclerView
Wymaga adaptera do wypełnienia widoki w każdym wierszu z danymi. Utwórz nowy plik java.MyRecyclerViewAdapter.java
Uwagi
ListViews
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 aktywności.
MainActivity.java
Uwagi
ItemClickListener
, co zdefiniowaliśmy w naszym adapterze. Dzięki temu możemy obsługiwać zdarzenia kliknięcia wiersza w plikachonItemClick
.Skończone
Otóż to. Powinieneś być w stanie uruchomić swój projekt teraz i uzyskać coś podobnego do obrazu na górze.
Dziać się
Dodanie separatora między rzędami
Możesz dodać taki prosty rozdzielacz
Jeśli chcesz czegoś bardziej złożonego, zapoznaj się z następującymi odpowiedziami:
Zmiana koloru wiersza po kliknięciu
Zobacz tę odpowiedź, aby dowiedzieć się, jak zmienić kolor tła i dodać efekt falowania po kliknięciu wiersza.
Aktualizuję wiersze
Zobacz tę odpowiedź, aby dowiedzieć się, jak dodawać, usuwać i aktualizować wiersze.
Dalsza lektura
źródło
Widok Minimal Recycler gotowy do użycia szablonu Kotlin dla:
Wiem, że to stary wątek, podobnie jak odpowiedzi tutaj. Dodanie tej odpowiedzi do wykorzystania w przyszłości:
Dodaj widok recyklingu w swoim układzie
Utwórz układ do wyświetlania elementów listy (list_item.xml)
Teraz utwórz minimalny adapter do przechowywania danych, kod tutaj jest oczywisty
Dodaj tę klasę do obsługi zdarzeń pojedynczego kliknięcia i długiego kliknięcia na elementach listy
Na koniec ustaw adapter w widoku Recycler i dodaj nasłuchiwanie dotyku, aby rozpocząć przechwytywanie zdarzenia dotykowego w celu pojedynczego lub dwukrotnego dotknięcia elementów listy
Bonus; Aktualizować dane
Wynik:
źródło
Będzie to najprostsza wersja implementacji RecyclerView.
activity_main.xml
list_item_view.xml
CustomAdapter.java
MainActivity.java
źródło
Zacznij od dodania biblioteki recyclinglerview.
Utwórz klasę modelu.
utwórz klasę adaptera.
utwórz układ row_uses.xml
Znajdź recykling i wypełnij dane.
tutaj znajdziesz pełny tutorial i kod źródłowy:
Android RecyclerView
źródło
usersAdapter = new UsersAdapter(userModelList,this);
?Na podstawie różnych źródeł stworzyłem prostą implementację RecyclerView przy użyciu prostej biblioteki.
Dodaj tę linię
build.gradle
AddCreate a RecyclerView, dodając MyRecyclerView w activity_main.xml z
Teraz w MainActivity utwórz ViewHolder, przekazując nazwę klasy, która musi zostać powiązana
Utwórz zmienną listy elementów i adaptery z bardzo małą liczbą wierszy, przekazując elementy, klasę i układ w adapterze
ClickListener można dodać za pomocą następujących linii
Gotowe.
Więcej przykładów i implementacji można znaleźć tutaj . Mam nadzieję że to pomoże !!!
źródło
Teraz potrzebujesz 1 adaptera dla wszystkich
RecyclerView
onBindViewHolder
, bezonCreateViewHolder
obsługi.Pokazuję tutaj ustawienie dwóch różnych
RecyclerView
adapterów o 1 -activity_home.xml
Możesz zobaczyć listę I pass, identyfikator układu elementu i odbiornik kliknięć z układu.
Te atrybuty niestandardowe są tworzone przez BindingAdapter .
Teraz z Aktywności, przechodzisz listę, kliknij słuchacz jak
HomeActivity.java
Nie chcesz czytać zbyt dużo, bezpośrednio sklonuj / pobierz pełny przykład z mojego repozytorium github. I spróbuj sam.
Możesz zobaczyć
GeneralAdapter.java
w powyższym repozytorium.Jeśli masz problemy podczas konfigurowania powiązania danych, zapoznaj się z tą odpowiedzią .
źródło
Ponieważ nie mogę jeszcze komentować, opublikuję jako odpowiedź link .. Znalazłem prosty, dobrze zorganizowany samouczek na temat recyklingu http://www.androiddeft.com/2017/10/01/recyclerview-android/
Poza tym, kiedy zamierzasz dodać widok recyklera do swojej aktywności, to, co chcesz zrobić, jest takie, jak poniżej i jak powinieneś to zrobić, zostało opisane w linku
źródło
Możesz użyć abstrakcyjnego adaptera z narzędziami diff i filtrem
SimpleAbstractAdapter.kt
I rozszerz abstrakcyjny adapter za pomocą metod implementacji
TasksAdapter.kt
Zainicjuj adapter
i wypełnij
dodaj niestandardowy filtr
filtruj dane
źródło
Zależności
Jedna klasa za kliknięcie
RecyclerView drugiej klasy
Klasa adaptera dla elementu recyklera
Klasa modułu
źródło
implementacja androidx.recyclerview: recyclinglerview: .... Zaleca się aktualizację do bibliotek androidx, które są tutaj:
https://developer.android.com/jetpack/androidx/releases/recyclerview
Następnie należy zaktualizować tag XML Widget pliku układu do: androidx.recyclerview.widget.RecyclerView
źródło
Oto znacznie nowsze rozwiązanie Kotlina, które jest znacznie prostsze niż wiele napisanych tutaj odpowiedzi, używa klasy anonimowej.
Pozwoliłem sobie użyć android.R.layout.simple_list_item_1, ponieważ jest to prostsze. Chciałem to jeszcze bardziej uprościć i umieścić ItemHolder jako klasę wewnętrzną, ale nie mogłem do końca zrozumieć, jak odwołać się do niej w typie w parametrze klasy zewnętrznej.
źródło