Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 12/08/15, 20:21:29
Array

[xs_avatar]
fervillagon fervillagon no está en línea
Usuario poco activo
 
Fecha de registro: ago 2015
Mensajes: 3
Tu operador: Movistar

SOLUCIONADO --- problema al pasar valor de una base de datos en un campo de un custom listview a otra actividad

Hola a todos.
Soy nuevo en programación y se me ha presentado un pequeño problema.

Os pongo en situación:

Estoy desarrollando una aplicación en la que una de las actividades tira de una base de datos sqlite mostrando varios campos con datos en un custom list view que muestro mediante un simpleCursorAdapter.

Código:
 
/* CUSTOM LISTVIEW Y ADAPTER PARA MOSTRAR INFORMACION DE REFERENCIAS */

        String[] from = new String[]{manager.CN_REF,manager.CN_NOM,manager.CN_DESDE,manager.CN_ADONDE, manager.CN_TIPO, manager.CN_CTDMOV, manager.CN_NUM};
        int[] to = new int[] {R.id.xreferencia,R.id.xnombre,R.id.xdesde2, R.id.xadonde2, R.id.xtipo2, R.id.xctdmov2, R.id.xnumeromapa};

        cursor = manager.cargarCursor92();
        adapter = new SimpleCursorAdapter(this, R.layout.listareferencias, cursor, from, to, 0);
        lista.setAdapter(adapter);
Hasta aqui todo bien.
El caso es que quiero pasar el valor que se devuelve en el campo R.id.xnumeromapa a otra actividad, y que es diferente en cada uno de los registros que se muestran en el custom listview segun su valor en la base de datos.

Para lo cual he definido lo siguiente con el objetivo de que escuche en el item del custom listview que estoy pulsando y me pase a la otra actividad el valor que se halla devuelto en el campo R.id.xnumeromapa en el item pulsado:

CODIGO DEL INTENT EN LA ACTIVIDAD QUE PASA LOS DATOS.

Código:
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                numeromapa = (TextView) findViewById(R.id.xnumeromapa);
                infonumeromapa = new String[1];

                infonumeromapa[0] = numeromapa.getText().toString();

                Intent act = new Intent(hfb92.this, Mapa92.class);
                act.putExtra(MAPA_92, infonumeromapa);
                startActivity(act);
            }
CODIGO QUE RECOGE LOS DATOS EN LA ACTIVIDAD A LA QUE QUIERO PASAR LOS DATOS.

Código:
prueba = (TextView) findViewById(R.id.prueba);

        Intent men = getIntent();
        info = men.getStringArrayExtra(hfb92.MAPA_92);
        prueba.setText(info[0]);
El resultado es que solo me funciona a medias. ya que tengo unos 7 registros con diferentes valores y solo consigo que en la actividad destino me devuelva dos valores distintos según en el ítem que pulse, si pulso en uno de los items superiores me devuelve el valor del primer ítem, y si pulso en uno de los inferiores me devuelve el del item 3 o 4 que correspondería al del centro de la lista.

si os ayuda a entender mejor, en la actividad donde tengo el custom listview tengo un buscador para que me devuelva 1 solo item segun 1 referencia. cuando hago la busqueda y pulso sobre el item encontrado si que me devuelve el valor correcto en la actividad destino. sea cual sea el item que devuelve la busqueda.

Última edición por fervillagon Día 12/08/15 a las 21:33:17.
Responder Con Cita


  #2  
Viejo 12/08/15, 21:09:40
Array

[xs_avatar]
oxot oxot no está en línea
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Tu operador: Pepephone
Creo que no lo estoy entendiendo bien, por qué estás usando un array de String si sólo vas a pasar un valor? Por qué no pasas el string directamente?
Algo me estoy perdiendo en la aplicación...
Responder Con Cita
  #3  
Viejo 12/08/15, 21:18:59
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

El problema aparentemente no es ni leer de la base de datos (la lista se genera bien) ni pasar datos a otra actividad (el intent es correcto). Lo que parece estar mal es el valor que se pasa al intent.

Tienes esto:
 Cita:
numeromapa = (TextView) findViewById(R.id.xnumeromapa);
Según está te va a devolver la vista que quiera Android porque hay varias con el mismo identificador (una en cada fila) y al llamar a findViewById estás buscando globalmente y te va a devolver la primera que haya en el layout. Para que solo busque dentro de la fila concreta tienes que buscar en la vista que corresponde al item pulsado, que es uno de los parámetros que se pasa al onItemClick:

 Cita:
numeromapa = (TextView) v.findViewById(R.id.xnumeromapa);
Prueba a ver
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #4  
Viejo 12/08/15, 21:28:50
Array

[xs_avatar]
fervillagon fervillagon no está en línea
Usuario poco activo
 
Fecha de registro: ago 2015
Mensajes: 3
Tu operador: Movistar

Muchísimas gracias MOCELET¡¡¡¡

ese era justamente el problema que tenía. Ahora funciona correctamente.

gracias de nuevo¡¡

Gracias a ti también OXOT, tendré en cuenta lo que me comentas del array del string, es verdad que solo necesito un valor.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 04:21:11 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /