Czy w nowym RecyclerView można używać rozwijanych elementów listy? Podoba Ci się ExpandableListView?
android
android-recyclerview
Dariusz Rusin
źródło
źródło
Odpowiedzi:
Jest to łatwe do zrobienia za pomocą standardowych LayoutManagerów, wszystko zależy od tego, jak zarządzasz kartą.
Jeśli chcesz rozwinąć sekcję, po prostu dodaj nowe elementy do adaptera po nagłówku. Pamiętaj, aby w tym celu zadzwonić do notificationItemRangeInserted. Aby zwinąć sekcję, po prostu usuwasz odpowiednie elementy i wywołujesz notifyItemRangeRemoved (). W przypadku wszelkich zmian danych, które zostaną odpowiednio zgłoszone, widok recyklera będzie animował widoki. Podczas dodawania elementów tworzony jest obszar, który ma zostać wypełniony nowymi elementami, a nowe elementy znikają. Usuwanie jest odwrotne. Jedyne, co musisz zrobić, poza elementami adaptera, to stylizować widoki, aby przekazać logiczną strukturę użytkownikowi.
Aktualizacja: Ryan Brooks napisał teraz artykuł o tym, jak to zrobić.
źródło
Pobierz przykładową implementację kodu stąd
Ustaw ValueAnimator wewnątrz onClick of ViewHolder
Oto ostateczny kod
źródło
ExpandableListView
”, ponieważ w tym przypadku rozwinięta zawartość jest listą zawierającą elementy pochodzące z adaptera. To zdegenerowane rozwiązanie, w którym tylko 1 pozycja jest dozwolona jako dzieci w grupie.https://github.com/gabrielemariotti/cardslib
Ta biblioteka zawiera implementację listy rozwijanej z widokiem recyklingu (patrz aplikacja demonstracyjna w sekcji „CardViewNative” -> „List, Grid i RecyclerView” -> „Expandable cards”). Zawiera również wiele innych fajnych kombinacji kart / list.
źródło
Ktoś narzekał, że powyższe rozwiązanie nie nadaje się do użytku z widokiem listy jako treścią rozwijaną. Ale jest proste rozwiązanie: utwórz widok listy i wypełnij ten widok listy ręcznie swoimi wierszami .
Rozwiązanie dla leniwych: istnieje proste rozwiązanie, jeśli nie chcesz zbytnio zmieniać kodu. Po prostu ręcznie użyj adaptera, aby utworzyć widoki i dodać je do
LinearLayout
.Oto przykład:
funkcje pomocnicze: getThemeReference
klasa pomocnika: ExpandUtils
Kavin Varnan postet już, jak animować układ ... Ale jeśli chcesz skorzystać z mojej klasy, nie krępuj się, zamieściłem streszczenie: https://gist.github.com/MichaelFlisar/738dfa03a1579cc7338a
źródło
recyclerview
i możesz rozwinąć / ukryć ten zagnieżdżony widok i wykorzystać wszystkie optymalizacjerecyclerview
Możesz użyć ExpandableLayout, który przypomina płynną animację rozwijania / zwijania CheckBox, dzięki czemu możesz go używać jako CheckBox w ListView i RecyclerView.
https://github.com/KyoSherlock/ExpandableLayout
źródło
To jest przykładowy kod tego, o czym wspomina @TonicArtos, aby dodawać i usuwać elementy oraz animować go podczas wykonywania, pochodzi z RecyclerView Animations i przykład GitHub
1) Dodaj Listener wewnątrz swojej onCreateViewHolder (), aby zarejestrować się w onClick
2) Utwórz niestandardowy OnClickListener wewnątrz adaptera
3) Dodaj swój addItem () i deleteItem ()
4) Jeśli RecyclerViewAdapter nie jest w tym samym działalność jako Recycler View , przechodzą instancję recyclerView do zasilacza podczas tworzenia
5) itemList to ArrayList typu mObject, który pomaga zachować stany pozycji (Open / Close), nazwę, typ Item (subItems / mainItem) i ustawić motyw na podstawie wartości
źródło