Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > pasar objetos de un arrayList a otro arrayList

hola,
estoy haciendo una aplicacion para clase. se trata de una tienda de discos. tengo un jframe, donde tengo 2 jlist, y he creado 2 clases arraylist con objetos de una clase DISCO. un arrraylist contiene el catalogo de los discos disponibles. el otro arraylist se trata del carro de compra, con lo que contendrá los objetos de la clase disco que seleccione en el jlist que muestra el catalogo. para meter cada arraylist en su jlist correspondiente, hemos creado 2 listmodel distintos, uno para cada jlist. al seleccionar un disco del catalogo (en el jlist) queremos que el objeto de la clase disco con el indice seleccionado en el jlist, se añada al arraylist del carro de compra, y se muestre en el jlist del carro de la compra.

es posible pasar objetos de un arraylist a otro? porque nos da problemas y no sabemos a que se puede deber. yo creo que tiene sentido lo que estamos intentando hacer... pero por algun motivo no funciona. y nos hemos planteado incluso que no sea posible pasar objetos de un arraylist a otro.


codigo de la clase del arrayList del catalogo de discos:

package practica3evtienda;

import java.util.ArrayList;
import java.util.Collections;

public class ListaDiscos {

private ArrayList<Disco> catalogo;

public ListaDiscos() {
this.catalogo = new ArrayList<Disco>();
}

public ArrayList<Disco> getLista() {
return catalogo;
}

public void addDisco(Disco p) {
this.catalogo.add(p);
Collections.sort(catalogo);
}

public Disco getDisco(int p) {
return (Disco) catalogo.get(p);
}

public int tam() {
return catalogo.size();
}
}

----------------

codigo de la clase del arrayList del carrito de la compra:

package practica3evtienda;

import java.util.ArrayList;
import java.util.Collections;

public class ListaCompra {

private ArrayList<Disco> carrito;

public ListaCompra() {
this.carrito = new ArrayList<Disco>();
}

public ArrayList<Disco> getLista() {
return carrito;
}

public void addDisco(Disco p) {
this.carrito.add(p);
Collections.sort(carrito);
}

public Disco getDisco(int p) {
return (Disco) carrito.get(p);
}

public int tam() {
return carrito.size();
}
}

--------------

clase Disco:


package practica3evtienda;

public class Disco implements Comparable{

private String referencia;
private String titulo;
private String autor;
private int año;
private double precio;
private String descripcion;
private int stock;

public Disco(String referencia, String titulo, String autor, int año, double precio, String descripcion, int stock) {
this.referencia = referencia;
this.titulo = titulo;
this.autor = autor;
this.año = año;
this.precio = precio;
this.descripcion = descripcion;
this.stock = stock;
}

public String obtenerAutor() {
return autor;
}

public String obtenerDescripcion() {
return descripcion;
}

public double obtenerPrecio() {
return precio;
}

public String obtenerReferencia() {
return referencia;
}

public String obtenerTitulo() {
return titulo;
}

public int obtenerStock() {
return stock;
}

@Override
public int compareTo(Object o){
final int ANTES=-1;
final int IGUAL =0;
final int DESPUES = 1;

Disco otra = (Disco) o;

if (this.autor.compareToIgnoreCase(otra.autor)==0)
return IGUAL;
else if (this.autor.compareToIgnoreCase(otra.autor)<1)
return ANTES;
else
return DESPUES;

}

public String toString(){
return autor + " - " + titulo;
}

}
------------------------------

clase con el modelo para el JList del catalogo de discos:

package practica3evtienda;

import javax.swing.DefaultListModel;

public class ModeloListaCatalogo extends DefaultListModel {

ListaDiscos datos;

public void cargar(ListaDiscos l) {
datos = l;
this.fireContentsChanged(this, 0, size());
}

@Override
public int getSize() {
return datos.tam();
}

@Override
public Object getElementAt(int index) {
String mostrar = datos.getDisco(index).obtenerAutor() + " - " + datos.getDisco(index).obtenerTitulo();
return mostrar;
}
}

------------------------

clase con el modelo para el JList del carrito de la compra:

package practica3evtienda;

import javax.swing.DefaultListModel;

public class ModeloListaCarro extends DefaultListModel {

ListaCompra datos1;

public void cargar(ListaCompra l) {
datos1 = l;
this.fireContentsChanged(this, 0, size());
}

@Override
public int getSize() {
return datos1.tam();
}

@Override
public Object getElementAt(int index) {
String mostrar = datos1.getDisco(index).obtenerAutor() + " - " + datos1.getDisco(index).obtenerTitulo();
return mostrar;
}
}

--------------------------

variables globales en el JFrame:

ListaDiscos lstdscs;
ModeloListaCatalogo mdl;
ListaCompra lstcompra;
ModeloListaCarro lstcarro = new ModeloListaCarro();
double precioTotal;

---------------------

creacion de los objetos de la clase disco y carga en el objeto de la clase ListaDiscos (arrayList del catalogo):

public InterfazGraficoTienda() {

lstdscs = new ListaDiscos();
lstdscs.addDisco(new Disco("001", "All Eyez On Me", "2Pac", 1996, 25.99, "Ultimo disco de 2pac. bla bla bla", 11));
lstdscs.addDisco(new Disco("002", "Chicago 16", "Chicago", 1982, 20.95, "blablablabla", 15));
lstdscs.addDisco(new Disco("003", "Help!", "The Beatles", 1965, 9.95, "blalblalblla", 6));
lstdscs.addDisco(new Disco("004", "Goats Head Soup", "The Rolling Stones", 1973, 12.05, "jgdkjtdutd", 8));
lstdscs.addDisco(new Disco("005", "The number of the beast", "Iron Maiden", 1982, 15.55, "gfjfjkfgjfjfg", 14));
lstdscs.addDisco(new Disco("006", "Me Against The World", "2Pac", 1995, 25.75, "nfgjfdjf", 23));
lstdscs.addDisco(new Disco("007", "The Don Killuminati: The 7 Day Theory", "2Pac", 1996, 25.4567, "edfrghj", 12));
lstdscs.addDisco(new Disco("008", "Chicago X", "Chicago", 1976, 14.45, "dfgdfh", 4));
lstdscs.addDisco(new Disco("009", "Sgt. Pepper's Lonely Hearts Club Band", "The Beatles", 1967, 12.55, "trhjd", 7));
lstdscs.addDisco(new Disco("010", "Their Satanic Majesties Request", "The Rolling Stones", 1967, 13.85, "hyghgf", 2));
lstdscs.addDisco(new Disco("011", "Fear of the Dark", "Iron Maiden", 1992, 19.75, "hjrtsikjghf", 22));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));
// lstdscs.addDisco(new Disco("", "", "", , "", ));


mdl = new ModeloListaCatalogo();
mdl.cargar(lstdscs);
}

-------------------------------

evento del boton "AÑADIR AL CARRO", que debería pasar el objeto del arrayList del catalogo al arrayList del carro de compra:

private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
// BOTÓN "AÑADIR AL CARRO"
int index = listacatalogo.getSelectedIndex();
Disco disco1 = lstdscs.getDisco(index);
lstcompra.addDisco(disco1);
lstcarro.cargar(lstcompra);

DecimalFormat frmt = new DecimalFormat("#.##");
double precio = disco1.obtenerPrecio();
precioTotal += precio;
total.setText(String.valueOf(frmt.format(precioTotal)));


}

----------------------------

SI NECESITAIS SABER ALGO MAS SOLO TENEIS QUE PEDIRLO.

MUCHAS GRACIAS POR VUESTRA ATENCION Y CONSEJOS!!! SALUDOS!!!

mayo 25, 2013 | Registered Commenterjacho981

Guenas.

¿Podrías explicar cual es el problema que os da?
Ayudaría mucho saber si te da una exceptión o simplemente no hace lo que esperáis.

Se puede escribir todo el código y probarlo, pero ya que preguntas podrías facilitar la labor a los que os leen para solventar el problema dando un ejemplo del error si es que se produce o bien dejando claro que es lo que hace o no hace.

Evidentemente es posible picar lo que dices (si esta todo el código) y probarlo, pero ayudaría mucho saber que esperas y que obtienes.

Se que soy un inútil y no puedo ayudar en nada pero creo que una duda concreta permitiría que otros menos inútiles o vagos que yo te ayudaran.

Un saludo
Paposo, el inútil, mentiroso y falso

mayo 25, 2013 | Unregistered CommenterPaposo

Buenas,

Yo estoy con Paposo, y el hecho de que el codigo no aparezca formateado dificulta mucho más las cosas...
Podrias hacer el esfuerzo de sintetizar tu problema en un ejemplo más pequeño en lugar de hacer copy&paste de todo tu codigo?

Un saludo

mayo 25, 2013 | Unregistered CommenterUnoPorAhi