Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 12/08/15, 20:21:29
Avatar de fervillagon
fervillagon fervillagon no está en línea
Usuario poco activo
Mensajes: 3
 
Fecha de registro: ago 2015
Mensajes: 3
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de oxot
oxot oxot no está en línea
Usuario muy activo
Mensajes: 741
 
Fecha de registro: may 2010
Localización: Santiago
Mensajes: 741
Modelo de smartphone: Xiaomi RedRice
Versión de ROM: MIUI V8
Tu operador: Pepephone
Mencionado: 2 comentarios
Tagged: 2 hilos
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
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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
Responder Con Cita
  #4  
Viejo 12/08/15, 21:28:50
Avatar de fervillagon
fervillagon fervillagon no está en línea
Usuario poco activo
Mensajes: 3
 
Fecha de registro: ago 2015
Mensajes: 3
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 07:54:27 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007