RecyclerView добавляет «пустой» элемент макета, и когда я нажимаю его, приложение падает

Я не добавлял никаких данных в свой RecyclerView, но в любом случае он показывает пустой ящик (тот, который я написал в макетах для моих данных). Он сбой с этой ошибкой

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 

Вот мой customAdapter:

 class CustomAdapterExercise(var exerciseList: ArrayList<Exercise>, val addList: ArrayList<textAdd>) : RecyclerView.Adapter<CustomAdapterExercise.ViewHolder>() { val typeAdd = 0 val typeExercise = 1 override fun getItemViewType(position: Int): Int { if (position == exerciseList.size + 1) { return typeAdd } else{ return typeExercise } } //this method is returning the view for each item in the list override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapterExercise.ViewHolder { if (viewType == typeExercise) { val itemView = LayoutInflater.from(parent.context).inflate(R.layout.exercise_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) { if (holder.itemViewType == typeAdd) { holder.bindAdd(addList[0]) } else{ if(position != exerciseList.size){ holder.bindItems(exerciseList[position]) } } } //this method is giving the size of the list override fun getItemCount(): Int { return exerciseList.size + 2 } //the class is hodling the list view class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindItems(Exercise: Exercise) { var exerciseAmount = itemView.findViewById<TextView>(R.id.exerciseAmount) if(exerciseAmount != null){ exerciseAmount.text = Exercise.exAmount } } fun bindAdd(textAdd: textAdd){ val addText = itemView.findViewById<TextView>(R.id.addText) if(addText != null){ addText.text = textAdd.textAdd } } } } 

Даже если я добавлю некоторые данные, он все равно создает пустую коробку, и я не понимаю почему. Интересно, как я могу остановить его от создания пустой коробки?

Это проблемы с вычислением индекса в RecyclerView:

В getItemCount он должен быть + 1 вместо + 2, так как ему нужно добавить только один дополнительный элемент для кнопки добавления.

В позиции getItemViewType в конце списка, если длина списка, а не длина списка +1. Это связано с тем, что позиция 0-индексируется. Так, например, если у вас есть 5 предметов, позиции 0-4 будут вашими пунктами упражнений, а затем позиция 5 (position == exerciseList.size) будет элементом добавления.

Добавление журналов в getItemViewType для позиции и сгенерированного типа просмотра полезно для отладки, поскольку оно показывает, какие позиции вычисляются неправильно очень быстро.