У меня есть два RecyclerView.Adapter
s, которые используют точно такие же RecyclerView.ViewHolder
s как внутренние классы.Всегда ли RecyclerView.ViewHolder должен быть внутренним классом?
Я хотел избавиться от дублирования кода и сделал эти ViewHolder
бесплатным, отдельным классом, поэтому новый класс теперь может использоваться любыми RecyclerView.Adapter
s.
Однако я столкнулся с множеством проблем, например, с трудностями при доступе к объектам адаптера. getAdapterPosition()
всегда возвращает -1
.
Поэтому я передумал и сделал класс супер RecyclerView.Adapter
, который расширяется этими адаптерами и помещает ViewHolder в суперкласс, чтобы эти адаптеры могли использовать его из подкласса.
Но я хочу знать, должен ли ViewHolder
быть внутренним классом. Меня это раздражает. Пожалуйста, не мне советы, чтобы объединить классы адаптеров, они совершенно разные, как ViewHolder
только специальный viewType
, которые могут быть появиться в любом RecyclerView
Я жду ваших лучших подходов, которые заставляют меня чувствовать себя лучше.
С уважением.
В Java нет даже реальных внутренних классов, только некоторые синтаксические сахара для написания классов одного и того же пакета в одном файле .java. Если у вас возникли проблемы с ViewHolders как не-внутренние классы, отправьте код проблемы. – laalto