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 25/04/12, 17:29:07
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Llenando ArrayList

Tengo un ArrayList y cago los datos así:

Amigo amigo1 = new Amigo();
amigo1.setTitulo("carlos");
Listin.add(amigo1);
amigo1.setTitulo("pepe");
Listin.add(amigo1);
amigo1.setTitulo("adolfo");
Listin.add(amigo1);


El caso es que al ver la lista yo esperaba ver:
carlos
pepe
adolfo

y no, en lugar de eso veo:
adolfo
adolfo
adolfo

¿porque? ¿como tendría que hacerlo para que salga bien ?
Responder Con Cita


  #2  
Viejo 25/04/12, 18:59:32
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
El ArrayList almacena las referencias, así que realmente has almacenado 3 referencias a amigo1 y por eso si haces un cambio en amigo1 también cambiará en el ArrayList.

El código correcto sería el siguiente:

Amigo amigo1 = new Amigo();
amigo1.setTitulo("carlos");
Listin.add(amigo1);
amigo1 = new Amigo();
amigo1.setTitulo("pepe");
Listin.add(amigo1);
amigo1 = new Amigo();
amigo1.setTitulo("adolfo");
Listin.add(amigo1);

En Java todo (a excepción de los enteros, decimales, floats, booleanos y poco más, creo que también los string, pero de esto no estoy muy seguro) son referencias, así que un cambio en el objeto de origen supondrá un cambio en todos los objetos que lo referencien.
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:42:12 (GMT +2)

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