Как создать собственный адаптер для 3 recycleViews

Всем здравствуйте, я хочу спросить, могу ли я добавить к своим 3 представлениям повторного использования каждый интерфейс представления повторного использования имеет интерфейс для оптимизации моего кода. Я пытался добавить только 1 адаптер для представления 3 повторных циклов, как вы можете видеть мой код ниже, но я обнаружил, что застрял с этим адаптер, у кого-нибудь есть идеи, как добавить собственный адаптер для адаптации 3 Recycle View? Спасибо.

класс CustomAdapter (частный контекст: контекст): RecyclerView.Adapter<RecyclerView.ViewHolder>() { контекст частного значения: Context = contexte

inner class FolderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}

inner class PagesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}

inner class CorpusViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

}


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    if (viewType == VIEW_TYPE_CORPUS)
        return CorpusViewHolder(
            LayoutInflater.from(parent.context)
                .inflate(R.layout.corpus_item_layout, parent, false)
        )
    if (viewType == VIEW_TYPE_FOLDER)
        return FolderViewHolder(
            LayoutInflater.from(parent.context)
                .inflate(R.layout.folder_item_layout, parent, false)
        )
    return PagesViewHolder(
        LayoutInflater.from(parent.context).inflate(
            R.layout.page_item_layout, parent, false
        )
    )
}

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    TODO("Not yet implemented")
}

override fun getItemCount(): Int {
    return 20
}


companion object {
    internal val VIEW_TYPE_CORPUS = 1
    internal val VIEW_TYPE_FOLDER = 2
    internal val VIEW_TYPE_PAGES = 2
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо этого я предлагаю вам использовать базовый класс, который принимает идентификатор макета и инициализирует с ним ваш общий адаптер.

open class AdapterItem(val layoutId: Int)
data class Corpus(val id: Int): AdapterItem(id)

затем инициализируйте свой адаптер, например CustomAdapter<AdapterItem>(...)

в вашем адаптере переопределите getView

@Override
fun getView(position: Int, convertView: View, parent: ViewGroup): View {
     val item = list[position]
     return if (converView != null){
          convertView
     } else {
          LayoutInflater.from(parent.context).inflate(item.layoutId, parent, false)
     }
}

Другие вопросы по теме