Mam dwa RecyclerView.Adapter
s, które używają dokładnie takich samych RecyclerView.ViewHolder
s jako klas wewnętrznych.Czy RecyclerView.ViewHolder zawsze musi być wewnętrzną klasą?
Chciałem pozbyć się powielania kodu i uczynić te ViewHolder
s darmową, oddzielną klasą, dzięki czemu zupełnie nowa klasa może być teraz używana przez dowolne RecyclerView.Adapter
s.
Jednak napotkałem wiele problemów, na przykład trudności w uzyskiwaniu dostępu do obiektów adaptera. getAdapterPosition()
zawsze zwraca -1
.
Więc zmieniłem zdanie i stworzyłem klasę super RecyclerView.Adapter
, która jest rozszerzona o te adaptery i umieszcza ViewHolder w superklasie, aby te adaptery mogły używać jej z podklasy.
Ale chcę wiedzieć, czy ViewHolder
musi być wewnętrzną klasą. To mnie denerwuje. Proszę mi doradzić NIE łączyć klasy adapter, one są zupełnie inne jak ViewHolder
jest tylko specjalny viewType
, które mogą być wyświetlane w dowolnej RecyclerView
Czekam na swoich lepszych rozwiązań, które sprawiają, że czuję się lepiej.
Pozdrawiam.
Java nie ma nawet prawdziwych klas wewnętrznych, tylko trochę cukru syntaktycznego do pisania klas tego samego pakietu w tym samym pliku .java. Jeśli masz problemy z ViewHolders jako nie-wewnętrzne klasy, opublikuj problematyczny kod. – laalto