The editext of my recyclerview goes crazy and changes the quantities

0

The fact is that my editext are not stored in the recycler, they are erased or go crazy. I tried to fix it by putting a new variable into the class and passing an array to fill it. Keep in mind that I am a newbie, as a result of that I apply the logic that occurs to me to do it. Thanks in advance.

The class:

data class ListaAddMenu(val marca: String,val cantidad:String)

The adapter:

var contadorGlobal = 0
var listaGlobalDeAdds = arrayListOf<String>()
class AdapterAddMenu(val lista: ArrayList<ListaAddMenu>): 
RecyclerView.Adapter<AdapterAddMenu.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): 
AdapterAddMenu.ViewHolder {
    val v = 
LayoutInflater.from(parent.context).inflate(R.layout.rc_add_menu, parent, false)
    return ViewHolder(v)
}

override fun getItemCount(): Int {
    contadorGlobal = lista.size
    return lista.size
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) = holder.bindItems(lista[position])

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),TextWatcher {

fun bindItems(item: ListaAddMenu) {
        itemView.rcTxtAddMenu.text = "${item.marca}"

itemView.txt2AddMenu.setText("${item.cantidad}",TextView.BufferType.EDITABLE)
        itemView.txt2AddMenu.addTextChangedListener(this)

    }
    override fun afterTextChanged(s: Editable?) {

    }

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int,
                                   after: Int) {
        var converter = s.toString()
        if (listaGlobalDeAdds.size < contadorGlobal ||  listaGlobalDeAdds.size == 0){
            listaGlobalDeAdds.add(converter)
        }else{
            listaGlobalDeAdds[position] = converter
        }
    }

    override fun onTextChanged(s: CharSequence?, start: Int,
                               before: Int, count: Int) {

    }
}

The activity where it is loaded:

var listAddMenu=ArrayList<String>()
class Activity_add_menu : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_add_menu)


    intent?.extras?.let {
        txtAddMenu.text = it.getString("titulo2")
    }

    val items = listaAddMenu()

    rc_add_menu.layoutManager = LinearLayoutManager(this)
    rc_add_menu.adapter = AdapterAddMenu(items)

}

fun listaAddMenu():ArrayList<ListaAddMenu>{
    val db = DBOopenHelper.getInstance(this)
    var list = ArrayList<ListaAddMenu>()
    listAddMenu.clear()
    db?.use{
        select("${txtAddMenu.text}").exec {
            this.moveToFirst()
            do {
                listAddMenu.add(getString(1))
            }while (this.moveToNext())

        }

    }
    if(listaGlobalDeAdds.size == 0 ){
        for(i in listAddMenu.indices)
            listaGlobalDeAdds.add("")
    }

    var contador = 0
    for (i in listAddMenu){
        list.add(ListaAddMenu(i, listaGlobalDeAdds[contador]))
        contador++
    }

    return list
}
    
asked by Angel Garrido 12.10.2018 в 10:59
source

0 answers