Как добавить изображение плюс в качестве кнопки в конце моего RecyclerView в Android?

Я хочу add кнопку add после всех упражнений. Например:

Изображение RecyclerView Я хочу

и я попытался реализовать его в моем CustomAdapter следующим образом:

 class CustomAdapterExercise(val exerciseList: ArrayList<Exercise>) : RecyclerView.Adapter<CustomAdapterExercise.ViewHolder>() { val typeAdd = 0 val typeExercise = 1 //this method is returning the view for each item in the list override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapterExercise.ViewHolder { if (viewType == typeAdd) { val itemView = LayoutInflater.from(parent.context).inflate(R.layout.exercise_layout, parent, false) return ViewHolder(itemView) } else if (viewType == typeExercise) { val itemView = LayoutInflater.from(parent.context).inflate(R.layout.add_layout, parent, false) return ViewHolder(itemView) } else{ val itemView = LayoutInflater.from(parent.context).inflate(R.layout.add_layout, parent, false) return ViewHolder(itemView) } } //this method is binding the data on the list override fun onBindViewHolder(holder: CustomAdapterExercise.ViewHolder, position: Int) { holder.bindItems(exerciseList[position]) } override fun getItemViewType(position: Int): Int { if (position <= exerciseList.size) { return typeExercise } else if (position == exerciseList.size + 1) { return typeAdd } else{ return typeAdd } } //this method is giving the size of the list override fun getItemCount(): Int { return exerciseList.size + 1 } //the class is hodling the list view class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindItems(Exercise: Exercise) { val exerciseAmount = itemView.findViewById<TextView>(R.id.exerciseAmount) val exerciseName = itemView.findViewById<TextView>(R.id.exerciseName) val exerciseWeight = itemView.findViewById<TextView>(R.id.exerciseWeight) val exerciseSets = itemView.findViewById<TextView>(R.id.exerciseSets) exerciseAmount.text = Exercise.exAmount exerciseName.text = Exercise.exName exerciseWeight.text = Exercise.weight exerciseSets.text = Exercise.sets } } } 

но он падает, как только я иду на эту точку зрения, и это дает мне эту ошибку:

 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at abyte.fitness.fitnessbyte.CustomAdapterExercise$ViewHolder.bindItems(CustomAdapterExercise.kt:67) 

Я понимаю, что это потому, что я назначаю текст своей добавочной кнопке, но я не знаю, как сделать это по-другому и заставить ее работать.

Я уже видел «повторяющийся» вопрос, когда я искал весь день, но для новичка, как я, это не объясняется …

Вам нужно включить viewType в onBindViewHolder .

 override fun onBindViewHolder(holder: CustomAdapterExercise.ViewHolder, position: Int) { if (holder.itemViewType == typeAdd) { // Bind the add button else { holder.bindItems(exerciseList[position]) } } 

Примечание:

Вы используете ViewHolder неправильно, одно из преимуществ ViewHolders не вынуждено делать findByView каждый раз, когда вы обновляете представление.