ArrayList ultimo registro sobreescreve sobre outros [RESOLVIDO]

4 respostas
alfredo-avai

Boa tarde pessoal, estou com o seguinte problema.
Tenho uma tela de listagem de registros de uma tabela, onde os registros são armazenados em um arraylist.
Porem o ultimo registro sobreescreve sobre o demais registros.
Lembrando que estou usando o padrao DAO e uma Jlist.
Se alguem poder dar uma dica .
Obrigado, valeu.

//CLASSE DAO
public ArrayList<AgendaTelefonica> Buscar(String nome) {
		
		ArrayList<AgendaTelefonica> arrayNomes = new ArrayList<AgendaTelefonica>();
		try {
			// pega a conexão
			java.sql.Connection con = null;
			con = Conexao.getConnection();
			java.sql.Statement stm = con.createStatement();
			ResultSet rs = null;
			/*
			rs = stm.executeQuery("SELECT * FROM agendatelefonica where de_nome like '%"
					+ nome + "%' ");
					*/
			rs = stm.executeQuery("SELECT * FROM agendatelefonica ");

			// objeto agendaTelefonica beans
			AgendaTelefonica agenda = new AgendaTelefonica();
			// carrega array
			while (rs.next()) {
				agenda.setId(Integer.parseInt(rs.getString("cd_id")));
				agenda.setNome(rs.getString("de_nome"));
				agenda.setTelefoneResidencial(rs
						.getString("de_telefoneresidencial"));

				agenda.setTelefoneComercial(rs
						.getString("de_telefonecomercial"));
				agenda.setCelular1(rs.getString("de_celular1"));
				agenda.setCelular2(rs.getString("de_celular2"));
				agenda.setEmail1(rs.getString("de_email1"));
				agenda.setRua(rs.getString("de_rua"));
				agenda.setBairro(rs.getString("de_bairro"));
				agenda.setNumero(rs.getString("de_numero"));
				agenda.setCidade(rs.getString("de_cidade"));
				agenda.setEstado(rs.getString("de_estado"));
				agenda.setCep(rs.getString("de_cep"));
				agenda.setEmpresa(rs.getString("de_empresa"));
				agenda.setDatanascimento(rs.getDate("datenascimento"));
				arrayNomes.add(agenda);

			}
			

		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, e);
		}

		return arrayNomes;

	}

Tela de busca

package telas.agenda;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.*;
import beans.AgendaTelefonica;
import DAO.PessoaDAO;
import java.awt.event.*;

public class TelaBuscar extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel JLnome;
	private JTextField JTnome;
	private JButton JBConfirmar, JBExcluir, JBEditar, JBCancelar;

	public TelaBuscar() {

		super(
				"Tela Buscar Cadastro - Listar Cadastros - Editar Cadastro - Excluir Cadastro ");

		this.setVisible(false);

		this.setBounds(400, 200, 700, 450);

		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

		this.getContentPane().setLayout(new GridLayout(3, 2));

		JPanel JPanelGeral = new JPanel();

		JPanel JPanelFormulario = new JPanel();

		JPanel JPanelBotoes = new JPanel();

		JPanel JPanelBotoesAuxiliares = new JPanel();

		final JList lista = new JList();

		final DefaultListModel model = new DefaultListModel();

		lista.setLayoutOrientation(JList.HORIZONTAL_WRAP);

		lista.setVisibleRowCount(0);

		JScrollPane scroll = new JScrollPane(lista);

		JLnome = new JLabel("Procurar Nome: ");

		JTnome = new JTextField("", 25);

		JPanelFormulario.add(JLnome);

		JPanelFormulario.add(JTnome);

		JBConfirmar = new JButton("Buscar");

		JBConfirmar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {

				if (JTnome.getText().equals("")) {
                    JOptionPane.showMessageDialog(null,"BUSCA INVALIDA ");   
				} else {
					String auxNome = JTnome.getText();

					try {
						PessoaDAO p = new PessoaDAO();

						ArrayList<AgendaTelefonica> arrayNomes = p
								.Buscar(auxNome);

						Iterator<AgendaTelefonica> it = arrayNomes.iterator();

						lista.setModel(model);

						while (it.hasNext()) {

							AgendaTelefonica itemLista = (AgendaTelefonica) it
									.next();

							model.addElement(itemLista);
						}

					} catch (Exception e1) {
					}

					auxNome = "";
					JTnome.setText("");
				}

			}
		});

		JPanelBotoes.add(JBConfirmar);

		JBCancelar = new JButton("Sair");

		JBCancelar.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {

				dispose();

				setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			}
		});

		JBEditar = new JButton("Editar Cadastro");

		JBEditar.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				AgendaTelefonica agendaParametroEditar = (AgendaTelefonica) lista
						.getSelectedValue();

				if (agendaParametroEditar == null) {

					JOptionPane.showMessageDialog(null,
							"SELECIONE ALGUM CADASTRO NA LISTA");

				} else {

					TelaEditarCadastro tlEditar = new TelaEditarCadastro();

					tlEditar.receptorDadosTelaEditarCadastro(agendaParametroEditar);

					tlEditar.setVisible(true);
				}
			}
		});

		JPanelBotoesAuxiliares.add(JBEditar);

		JBExcluir = new JButton("Excluir Cadastro");

		JBExcluir.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				TelaExcluirCadastro tlExcluir = new TelaExcluirCadastro();

				tlExcluir.setVisible(true);

			}
		});

		JPanelBotoesAuxiliares.add(JBExcluir);

		JPanelBotoes.add(JBCancelar);

		JPanelGeral.add(JPanelFormulario);

		JPanelGeral.add(JPanelBotoes);

		JPanelGeral.add(JPanelBotoesAuxiliares);

		this.getContentPane().add(JPanelGeral);

		this.getContentPane().add(scroll);

	}
}

4 Respostas

adriano_si

Cara, não tenho como testar agora… Tenta assim:

Ao invés disso: // objeto agendaTelefonica beans AgendaTelefonica agenda = new AgendaTelefonica(); // carrega array while (rs.next()) { agenda.setId(Integer.parseInt(rs.getString("cd_id")));

Tenta isso:

// carrega array  
while (rs.next()) {  
    // objeto agendaTelefonica beans  
    AgendaTelefonica agenda = new AgendaTelefonica();  
    agenda.setId(Integer.parseInt(rs.getString("cd_id")));

Porque como só crias o Objeto AgendaTelefônica uma vez só, estás atualizando sempre o mesmo Objeto e o adicionando mais uma vez à Lista… Isso fará com o que o Objeto apareça Ns vezes na sua lista… E o que era pra ser uma lista de Ns Objetos, se transforma em uma lista com o Mesmo Objeto…

Pelo menos é o que tá parecendo…

Abs []

alfredo-avai

Funciono direitinho valeu adriano_si
abraços

adriano_si

alfredo-avai:
Funciono direitinho valeu adriano_si
abraços

Opa… blz cara…

Entendeste direitinho o que ocorreu ???

Abs []

alfredo-avai

Entendi, a foi mais erro de parte logica mesmo.
valeu pela ajuda

Criado 10 de janeiro de 2011
Ultima resposta 10 de jan. de 2011
Respostas 4
Participantes 2