проблема с динамическим добавлением элементов в RecyclerView
recyclerview код:
class recyclerviewedit : RecyclerView.Adapter<recyclerviewedit.MyViewHolder>() {
private var num = 1
private var array = mutableListOf<LinearLayout>()
private var checkarr = mutableListOf<Boolean>()
private var editarr = mutableListOf<String>()
private var checkarrl = mutableListOf<Boolean>()
private var editarrl = mutableListOf<String>()
private var check = mutableListOf<Boolean>()
private var edit = mutableListOf<String>()
private var bool = false
var save : ((list) -> Unit)? = null
fun savelist(){
check.clear()
edit.clear()
for (i in 0..num-1){
check.add(checkarr[i])
edit.add(editarr[i])
}
println("lists:")
println(check)
println(edit)
save?.invoke(list(namelist = "",listbool = check,liststr = edit))
}
fun plusnum(){
num+=1
notifyDataSetChanged()
}
fun listf(x : list){
bool = true
checkarr = x.listbool
editarr = x.liststr
}
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val layout = itemView.findViewById<LinearLayout>(R.id.layoutlist)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val itemView =
LayoutInflater.from(parent.context)
.inflate(R.layout.layoutlist, parent, false)
return MyViewHolder(itemView)
}
@SuppressLint("ResourceAsColor")
@RequiresApi(Build.VERSION_CODES.N)
override fun onBindViewHolder(holder: MyViewHolder, i: Int) {
holder.apply {
if (bool) {
layout.checkBox4.isChecked = checkarrl[i]
layout.edittext4.setText(editarrl[i])
if (layout.checkBox4.isChecked) {
var str = SpannableString(layout.edittext4.text)
str.setSpan(StrikethroughSpan(), 0, layout.edittext4.text.length, 0)
layout.edittext4.setText(str)
}
}
checkarr.add(layout.checkBox4.isChecked)
editarr.add(layout.edittext4.text.toString())
println(checkarr)
println(editarr)
layout.checkBox4.setOnClickListener {
layout.background = ColorDrawable(R.color.black_overlay)
checkarr[i] = layout.checkBox4.isChecked
editarr[i] = layout.edittext4.text.toString()
}
layout.button4.setOnClickListener {
layout.visibility = GONE
checkarr.removeAt(i)
editarr.removeAt(i)
}
}
}
override fun getItemCount(): Int {
return num
}
}
проблема в том что при добавлении, элемент добавляется в рандомное место в порядке типа может добавится по середине всех элементов или сверху, а должен как вы понимаете снизу, также рандомно какого-то из элементов или у каких то пропадает черточка которая подчеркивает введенный текс(элемент это едиттекст), а после пропажи появляется у другого элемента у которого тоже пропала черточка ранее, я понимаю почему это происходит кривое добавление(заранее добавленные элементы recyclerview), но не понимаю как это можно исправить, и вообще не подозреваю как исправить проблему с чертой