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 03/02/17, 14:30:15
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
layout_weight

Tengo un problema, tengo dos parsers en un mismo activity,

Código:
for (int j = 0; j < contacts1.length(); j++) {
    JSONObject d = contacts1.getJSONObject(j);

    String dorsal_local = d.getString("dorsal") + " - ";
    String nombre_local = d.getString("nombre");

    // tmp hash map for single contact
HashMap<String, String> contact1 = new HashMap<>();

    // adding each child node to HashMap key => value
contact1.put("dorsal_local",dorsal_local);
    contact1.put("nombre_local",nombre_local);

    // adding contact to contact list
contactList.add(contact1);

}


    for (int k = 0; k < contacts2.length(); k++) {
        JSONObject e = contacts2.getJSONObject(k);

        String dorsal_visi = e.getString("dorsal") + " - ";
        String nombre_visi = e.getString("nombre");

        // tmp hash map for single contact
HashMap<String, String> contact2 = new HashMap<>();

        // adding each child node to HashMap key => value
contact2.put("dorsal_visi",dorsal_visi);
        contact2.put("nombre_visi",nombre_visi);

        // adding contact to contact list
contactList.add(contact2);
    }
Los cuales los envio para visualizar en un mismo listview:

Código:
ListAdapter adapter1 = new SimpleAdapter( DetailActivity.this, contactList,
        R.layout.titulares_row,
        new String[]{"dorsal_local", "nombre_local", "dorsal_visi", "nombre_visi"},
        new int[]{R.id.tv_dorsal_local, R.id.tv_titulares_local,R.id.tv_dorsal_visi, R.id.tv_titulares_visi});

lv1.setAdapter(adapter1);
Hasta ahi todo correcto, pero, lo que intento es que se vean en el listview el dorsal_local, nombre_local, dorsal_visitante y nombre_visitante en una misma linea y lo que me ocurre es que me muestra, dorsal y nombre de los locales y al finalizar todos es cuando empiezan a salir el dorsal y el nombre visitante.

titulares_row.xml

Código:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content""
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp">

    <TextView
android:id="@+id/tv_dorsal_local"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/primaryColor"
android:textSize="16sp"
android:text="DL"
android:gravity="left|center_vertical"
android:minLines="3"/>

    <TextView
android:id="@+id/tv_titulares_local"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:textColor="@color/primaryColor"
android:textSize="16sp"
android:gravity="center_vertical"
android:text="local"
android:minLines="3"/>

    <TextView
android:id="@+id/tv_dorsal_visi"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/primaryColor"
android:textSize="16sp"
android:text="DV"
android:gravity="left|center_vertical"
android:minLines="3"/>

    <TextView
android:id="@+id/tv_titulares_visi"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:textColor="@color/primaryColor"
android:textSize="16sp"
android:gravity="center_vertical"
android:text="Visitante"
android:minLines="3"/>

<LinearLayout>
Alguna solucion?
Gracias

Última edición por Merche300 Día 07/05/17 a las 11:29:30.
Responder Con Cita


  #2  
Viejo 03/02/17, 17:12:25
Array

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

Hace lo que le estás indicando, primero filas que solo tienen texto en dorsal_local y nombre_local (primer bucle) y luego filas que solo tienen texto en dorsal_visi y nombre_visi (segundo bucle)

Si quieres que salga todo en la misma fila tendrás que añadir las cosas de visitante al mismo "contact" donde guardaste el local en el primer bucle.

P.D: Vamos, que no es problema de weights ni nada, las filas tienen cuatro campos, pero en la primera mitad los dos últimos están vacíos y no los ves. Y en la segunda mitad están vacíos los dos primeros
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 03/02/17 a las 17:14:40.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 03/02/17, 17:19:36
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Hace lo que le estás indicando, primero filas que solo tienen texto en dorsal_local y nombre_local (primer bucle) y luego filas que solo tienen texto en dorsal_visi y nombre_visi (segundo bucle)

Si quieres que salga todo en la misma fila tendrás que añadir las cosas de visitante al mismo "contact" donde guardaste el local en el primer bucle.

P.D: Vamos, que no es problema de weights ni nada, las filas tienen cuatro campos, pero en la primera mitad los dos últimos están vacíos y no los ves. Y en la segunda mitad están vacíos los dos primeros
se queda igual mocelet
ya lo hice antes asi dentro de cada *for, con los *contact1

Código:
HashMap<String, String> contact1 = new HashMap<>();

// adding each child node to HashMap key => value
contact1.put("dorsal_visi",dorsal_visi);
contact1.put("nombre_visi",nombre_visi);

// adding contact to contact list
contactList.add(contact1);
Responder Con Cita
  #4  
Viejo 03/02/17, 17:27:12
Array

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

No nos hemos entendido El problema es que llamas una vez al contactList.add para los locales y eso es como si fuera una fila nueva ya. Así que nunca vas a tener los visitantes al lado.

Al .add solo puedes llamarlo cuando tengas los cuatro valores guardados, es decir, en algún sitio debes tener esto:


[PHP]contact.put("dorsal_local",dorsal_local);
contact.put("nombre_local",nombre_local);
contact.put("dorsal_visi",dorsal_visi);
contact.put("nombre_visi",nombre_visi);
contactList.add(contact);[/PHP]


Tienes que juntar los dos bucles en uno.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 03/02/17 a las 17:31:29.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 03/02/17, 17:30:01
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
No nos hemos entendido El problema es que llamas una vez al contactList.add para los locales y eso es como si fuera una fila nueva ya. Así que nunca vas a tener los visitantes al lado.

Al .add solo puedes llamarlo cuando tengas los cuatro valores guardados, es decir, en algún sitio debes tener esto:

Código:
contact.put("dorsal_local",dorsal_local);
contact.put("nombre_local",nombre_local);
contact.put("dorsal_visi",dorsal_visi);
contact.put("nombre_visi",nombre_visi);
contactList.add(contact);
Tienes que juntar los dos bucles en uno.
Gracias voy a provar
Responder Con Cita
  #6  
Viejo 03/02/17, 17:34:27
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
No nos hemos entendido El problema es que llamas una vez al contactList.add para los locales y eso es como si fuera una fila nueva ya. Así que nunca vas a tener los visitantes al lado.

Al .add solo puedes llamarlo cuando tengas los cuatro valores guardados, es decir, en algún sitio debes tener esto:


[php]contact.put("dorsal_local",dorsal_local);
contact.put("nombre_local",nombre_local);
contact.put("dorsal_visi",dorsal_visi);
contact.put("nombre_visi",nombre_visi);
contactList.add(contact);[/php]Tienes que juntar los dos bucles en uno.
no esta puesto?

contact1.put("dorsal_local",dorsal_local); contact1.put("nombre_local",nombre_local);


aaa ok juntos gracias
Responder Con Cita
  #7  
Viejo 03/02/17, 17:37:58
Array

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

Ya no hay contact1 y contact2, es un único contact (que no sé por qué lo llamas así de todas formas) que contiene los cuatro atributos (dos que has sacado de un json y dos que has sacado de otro)

Ten en cuenta que cada contact que añadas a contactList va a convertirse en una fila, así que tienes que escribir los cuatro campos antes de añadirlo.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 03/02/17, 17:40:22
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Ya no hay contact1 y contact2, es un único contact (que no sé por qué lo llamas así de todas formas) que contiene los cuatro atributos (dos que has sacado de un json y dos que has sacado de otro)

Ten en cuenta que cada contact que añadas a contactList va a convertirse en una fila, así que tienes que escribir los cuatro campos antes de añadirlo.
Gracias, lo entiendo, voy a ver que sale.
Responder Con Cita
  #9  
Viejo 04/02/17, 08:32:40
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
nada no me sale
Responder Con Cita
  #10  
Viejo 04/02/17, 09:12:55
Array

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

Básicamente es copiar y pegar lo del segundo bucle en el primero cambiando algún nombre de variable, debería ser algo así, suponiendo que contacts1 y contacts2 tengan el mismo número de elementos.


[PHP]for (int i = 0; i < contacts1.length(); i++) {
JSONObject d = contacts1.getJSONObject(i);
JSONObject e = contacts2.getJSONObject(i);
String dorsal_local = d.getString("dorsal") + " - ";
String nombre_local = d.getString("nombre");
String dorsal_visi = e.getString("dorsal") + " - ";
String nombre_visi = e.getString("nombre");

HashMap<String, String> contact = new HashMap<>();
contact.put("dorsal_local",dorsal_local);
contact.put("nombre_local",nombre_local);
contact.put("dorsal_visi",dorsal_visi);
contact.put("nombre_visi",nombre_visi);
contactList.add(contact);
}[/PHP]
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #11  
Viejo 04/02/17, 09:34:45
Array

[xs_avatar]
Merche300 Merche300 no está en línea
Betatester oficial
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Tu operador: Pepephone
Vaya tela, no se las horas que me he tirado, no se como lo hacia pero solo me salia el ultimo item decada lista. Me confundian los contacts 1 - 2, voy a cambiar los nombre.
gracias
Responder Con Cita
Respuesta

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



Hora actual: 23:36:48 (GMT +2)



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

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