Ошибка RecyclerView

195
15 апреля 2022, 19:50

Весь код адаптера

class NotesAdapter() : RecyclerView.Adapter<RecyclerView.ViewHolder>()
{
var listenerAdapter : AdapterOnItemClickListener? = null
private var list = emptyList<Notes>()
override fun getItemViewType(position: Int): Int {
    return when(list[position]){
        is BasicNote -> 0
        is PrivateNote -> 1
    }
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    val inflater = LayoutInflater.from(parent.context)
    return when(viewType){
        0 -> BasicNotesViewHolder(itemView = inflater.inflate(R.layout.item_note,parent , false 
),listenerAdapter!!)
        else -> PrivateNotesViewHolder(itemView = 
inflater.inflate(R.layout.item_private_note,parent,false),listenerAdapter!!)
    }
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int){
    when(holder){
        is BasicNotesViewHolder -> holder.bind(list[position] as BasicNote)
        is PrivateNotesViewHolder -> holder.bind(list[position] as  PrivateNote)
        }
    }
override fun getItemCount(): Int = list.size
class BasicNotesViewHolder(itemView : View, private val listener : AdapterOnItemClickListener) : 
RecyclerView.ViewHolder(itemView){
     private val nameNote : TextView = itemView.view_note_name
    fun bind(model : BasicNote){
        nameNote.text = model.header
        itemView.setOnClickListener {
            listener.onItemClickListener(model)
        }
    }
}
class PrivateNotesViewHolder(itemView : View, private val listener : AdapterOnItemClickListener) : 
RecyclerView.ViewHolder(itemView){
    private val nameNote : TextView = itemView.view_private_note_name
    fun bind(model : PrivateNote){
        nameNote.text = model.header
        itemView.setOnClickListener {
            listener.onItemClickListener(model)
        }
    }
}
fun setList(list : List<Notes>){
    this.list = list
    notifyDataSetChanged()
}
}

ошибка

java.lang.NullPointerException at com.example.mynote.Adapters.NotesAdapter.onCreateViewHolder(NotesAdapter.kt:32) at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851) at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404) at android.view.View.layout(View.java:17050)

Answer 1

Скорее всего вы не назначили никакого listenerAdapter, и на момент вызова конструктора BasicNotesViewHolder он у вас имеет значение null.

READ ALSO
Mожно ли вывести данные конструктора в System.out.println()?

Mожно ли вывести данные конструктора в System.out.println()?

На данный момент задача такая: Класс Phonea) Создайте класс Phone, который содержит переменные number, model и weight

153
Как удалить EventHandler в JavaFX?

Как удалить EventHandler в JavaFX?

Есть у меня приложениеЕсть в нем вызываемое модальное окно

218
что делает двоеточие вне метода foreach в java?

что делает двоеточие вне метода foreach в java?

Когда я ставлю двоеточие после любого слова, которое даже не является какой-то переменной, код принимает этоДопустим, если напишу "gjsdlg:"...

136
Показать ошибку нет интернета используя Retrofit 2 и RxJava

Показать ошибку нет интернета используя Retrofit 2 и RxJava

для получения данных с сервера использую вот такой запрос:

175