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
}