Adicionar objetos diferentes em um ArrayList

4 respostas
R

Olá,

Tenho uma tela com uma tabela, onde nessa tabela são listados clientes, onde eu seleciono os clientes que eu quero e gero um txt com os dados desses clientes.
Atravez da seleção que eu faço no checkbox da tabela, eu passo pro javaScript os dados da linha selecionada, e na classe eu tenho um if onde eu verifico os clientes checados e vou pegando os dados da linha (atravez do StringTokenizer). Os dados do cliente eu passo pra um Object, e no final desse if, eu adiciono esse objeto em uma lista.
O problema é que quando eu saiu do meu if, na lista só está os dados do cliente que eu chequei por último, e na hora de gerar, só gera o s dados do último cliente checado.

Segue o meu código:

PosicaoAtualizadaInvestimentoTO posicaoAtualizadaInvestimentoTO = new PosicaoAtualizadaInvestimentoTO();

ArrayList operacoes = new ArrayList();
String listaSelecionados = geracaoPosicaoAtualizadaInvestimentoForm.getListaSelecionados(); 
			// Cada item selecionado
			StringTokenizer tokenLinha = new StringTokenizer(listaSelecionados, ",");
				
			while (tokenLinha.hasMoreTokens()) { //executo enquanto tem operacoes
				String linha = tokenLinha.nextToken();
				StringTokenizer tokenOperacao = new StringTokenizer(linha, "|");
					
				int cliente = 0;	
				int agencia = 0;
				int conta = 0;
				String contrato = "";
				int checked = 0;

				cliente = Integer.parseInt(tokenOperacao.nextToken());
				agencia = Integer.parseInt(tokenOperacao.nextToken());
				conta = Integer.parseInt(tokenOperacao.nextToken());
				contrato = tokenOperacao.nextToken();
				checked = Integer.parseInt(tokenOperacao.nextToken());
				
				if (checked == 1) {	//verifico se linha está selecionada e se tiver eu populo o objeto com os dados trazidos da jsp (para cada linha selecionada, eu executo esse if)				
					
				
				posicaoAtualizadaInvestimentoTO.setVeiculoLegal(controleFechamentoSessao.getEmpresa());
				posicaoAtualizadaInvestimentoTO.setCdCliente(cliente);
				posicaoAtualizadaInvestimentoTO.setCdAgenciaBancaria(agencia);
				posicaoAtualizadaInvestimentoTO.setCdContaBancaria(conta);
				posicaoAtualizadaInvestimentoTO.setCdContrato(contrato);
				posicaoAtualizadaInvestimentoTO.setProdutoOperacaoTO(controleFechamentoSessao.getProdutoOperacao());
				posicaoAtualizadaInvestimentoTO.setCdUsuarioAtualizacao(codigoUsuario);
				posicaoAtualizadaInvestimentoTO.setDtAtualizacao(dataMovimento);
								
				operacoes.add(posicaoAtualizadaInvestimentoTO); // aqui eu adiciono o objeto na lista
				
				}
			}

Alguem pode ajudarr??

4 Respostas

J

Primeiramente, use a tag CODE pra postar o código, facilita muito o entendimento! :smiley:

R

Obrigada a dica,

segue o código novamente…

PosicaoAtualizadaInvestimentoTO posicaoAtualizadaInvestimentoTO = new PosicaoAtualizadaInvestimentoTO();
ArrayList operacoes = new ArrayList();

String listaSelecionados = geracaoPosicaoAtualizadaInvestimentoForm.getListaSelecionados();
// Cada item selecionado
StringTokenizer tokenLinha = new StringTokenizer(listaSelecionados, ",");

while (tokenLinha.hasMoreTokens()) { //executo enquanto tem operacoes
String linha = tokenLinha.nextToken();
StringTokenizer tokenOperacao = new StringTokenizer(linha, "|");

int cliente = 0;
int agencia = 0;
int conta = 0;
String contrato = "";
int checked = 0;

cliente = Integer.parseInt(tokenOperacao.nextToken());
agencia = Integer.parseInt(tokenOperacao.nextToken());
conta = Integer.parseInt(tokenOperacao.nextToken());
contrato = tokenOperacao.nextToken();
checked = Integer.parseInt(tokenOperacao.nextToken());

if (checked == 1) { //verifico se linha está selecionada e se tiver eu populo o objeto com os dados trazidos da jsp (para cada linha selecionada, eu executo esse if)


posicaoAtualizadaInvestimentoTO.setVeiculoLegal(controleFechamentoSessao.getEmpresa());
posicaoAtualizadaInvestimentoTO.setCdCliente(cliente);
posicaoAtualizadaInvestimentoTO.setCdAgenciaBancaria(agencia);
posicaoAtualizadaInvestimentoTO.setCdContaBancaria(conta);
posicaoAtualizadaInvestimentoTO.setCdContrato(contrato);
posicaoAtualizadaInvestimentoTO.setProdutoOperacaoTO(controleFechamentoSessao.getProdutoOperacao());
posicaoAtualizadaInvestimentoTO.setCdUsuarioAtualizacao(codigoUsuario);
posicaoAtualizadaInvestimentoTO.setDtAtualizacao(dataMovimento);

operacoes.add(posicaoAtualizadaInvestimentoTO); // aqui eu adiciono o objeto na lista

}
}
jpjcjbr

Opa…

Vc precisa instanciar seu objeto a cada iteracao

Vc ta instanciando apenas uma vez é trocando os valores do objeto

É só fazer algo como: PosicaoAtualizadaInvestimentoTO posicaoAtualizadaInvestimentoTO = new PosicaoAtualizadaInvestimentoTO();

Acho que isso já resolve

R

Obrigada jpjcjbr !!!
agora funcionou direitinho…

:slight_smile:

Criado 13 de outubro de 2011
Ultima resposta 13 de out. de 2011
Respostas 4
Participantes 3