0 votos
Este es parte de mi código pero en listaProductos solo me carga el ultimo de los registros obtenidos de la bbdd.

val url = "http://..../webservices/pruebalistarusuarios.php"

val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener { response ->
    val jsonArray = JSONArray(response)
    for (i in 0 until jsonArray.length()) {
        val jsonObject = JSONObject(jsonArray.getString(i))
        var text = jsonObject.get("codigo")
        var text1 = jsonObject.get("nombre")
        var text2 = jsonObject.get("contrasena")
        var text3 = jsonObject.get("usuario")
        var text4 = jsonObject.get("email")
        var texta = text.toString()
        var textb = text1.toString()
        var textc = text2.toString()

        val producto = Producto(texta, textb, textc, R.drawable.ic_launcher_foreground)
        val listaProductos = listOf(producto)
        val adapter = ProductosAdapter(this, listaProductos)
        lista.adapter = adapter
        lista.setOnItemClickListener { parent, view, position, id ->
            val intent = Intent(this, ProductoActivity::class.java)
            intent.putExtra("producto", listaProductos[position])
            startActivity(intent)
        }
    }
por en Aplicaciones Móviles

1 Respuesta

0 votos
Mejor respuesta

Buenas Miguel.

Por un lado, listOf crea una lista con los productos que le pases (al ser el último siempre te mostrará el último). Por lo que te recomiendo que inicialices "listaProductos" fuera del for y añadas elementos con "add" a la lista:

val listaProductos = listOf<Producto>();

for (...){
    ...
    listaProductos.add(producto)
    ...
}

Por otro lado, me parece que no te hace falta llamar tantas veces a setOnItemClickListener (esto es una propuesta de mejora, no debería de tener que ver con tu problema). Prueba sacando fuera del "for" la parte (pues parece que la estás llamándola múltiple veces cuando creas el listaProductos):

val adapter = ProductosAdapter(this, listaProductos)
        lista.adapter = adapter
        lista.setOnItemClickListener { parent, view, position, id ->
            val intent = Intent(this, ProductoActivity::class.java)
            intent.putExtra("producto", listaProductos[position])
            startActivity(intent)
        }

 

por
seleccionada por
Hola Ramon,

    Primeramente darte las gracias por tu pronta respuesta.

    Por otro lado, hice lo que me indicaste y todo salió correctamente.

    Nuevamente muchísimas gracias por compartir tus conocimientos y seguro que esta no es la última vez que te molesto.

Saludos