Duvica com o List urgente!

9 respostas
D

ola galera… estou com o seguinte problema:

tenhu um LIST declarado assim

List<PecaListaVenda> pecasListadas= new ArrayList<PecaListaVenda>();

neste LIST vou adicionando itens de um pedido, mas eu preciso excluir um item quando o usuario tiver inserido errado, fiz dessa forma:

private void atualizaTabela(int nLinha) throws SQLException {//chamo esse metodo qdo o usuario clica na linha da tabela a ser excluida, o nLInha é um get da linha da tabela que é correspondete as posiçoes do LIST
pecasListadas.remove(nLinha);// eu fiz dessa forma pra excluir a posiçao do LIst
limpatabelaPeca();

for (int i=0; i<pecasListadas.size(); i++){// esse metodo é para mostra a tabela atualizada 
        try{
            mostraTabelaAtualizada(pecasListadas.get(i).getIdPeca(), pecasListadas.get(i).getQtde());
        }catch (Exception ex){
            JOptionPane.showMessageDialog(null, ex);
        }
      }
}</blockquote>

so q nao roda, eu ja tentei por um System.out.println dpois q fiz o pecasListadas.remove(nLinha) e nem mostra nda, alguem tem ideia de outra forma de como posso fazer isso?

9 Respostas

d34d_d3v1l

poderia refazer sua pergunta?

E outra, utilize “Code” para códigos e não “Quote”…

abraços

D

ola galera.. estou com o seguinte problema:

tenhu um LIST declarado assim
List<PecaListaVenda> pecasListadas= new ArrayList<PecaListaVenda>();
neste LIST vou adicionando itens de um pedido, mas eu preciso excluir um item quando o usuario tiver inserido errado, fiz dessa forma:
private void atualizaTabela(int nLinha) throws SQLException {//chamo esse metodo qdo o usuario clica na linha da tabela a ser excluida, o nLInha é um get da linha da tabela que é correspondete as posiçoes do LIST 
pecasListadas.remove(nLinha);// eu fiz dessa forma pra excluir a posiçao do LIst 
limpatabelaPeca(); 

for (int i=0; i<pecasListadas.size(); i++){// esse metodo é para mostra a tabela atualizada 
try{ 
mostraTabelaAtualizada(pecasListadas.get(i).getIdPeca(), pecasListadas.get(i).getQtde()); 
}catch (Exception ex){ 
JOptionPane.showMessageDialog(null, ex); 
} 
} 
}
so q nao roda, eu ja tentei por um System.out.println dpois q fiz o pecasListadas.remove(nLinha) e nem mostra nda, alguem tem ideia de outra forma de como posso fazer isso?
d34d_d3v1l

faça um debug no netbeans … se não souber como que se faz o debug, então
vá colocando linhas

System.out.println("estou tentando fazer isso");

até você descobrir onde está o problema… qndo descobrir a gente discutirá aqui :wink:
abraços

D

ja fiz… minha logica ta errada, preciso de uma ideia de fazer isso de outra forma

tpmarc

Primeiro: Idente o código e use as convenções do Java para deixá-lo legível. É bem desagradável ler código assim.

Seu método limpatabelapeca devia ser limpaTabelaPeca.

Falando nele, o que ele faz? Tente fazer um debbug pra ver como fica a lista exatamente após a remoção e antes da chamada deste método.

romarcio

Mas acontece algum erro quando tenta executar o for depois de excluir?
Vc já debugou para ver se as coisas estão acontecendo como planejava?

tpmarc

Seria interessante que você modelasse seu negócio com beans, por exemplo:

Um item de seu pedido:

class Item {
    
    private Long id;
    private String nome;
    private Double preco;
    private Pedido pedido;

    //getters e setters

}

a classe do pedido

class Pedido {
    
    private Long id; 
    private List<Item> itens;

    //getters e setters

}

Faça um método remove recebendo um item, numa classe que controle os pedidos:

class Cliente {

    private Pedido pedido;

    public void remove(Item item) {
        for (Item i : pedido) {
            if (item.equals(i)) {
                pedido.remove(i);
            }
        }
    }

}
P

Implemente o método equals no seu bean item, escolha um atributo unico como o id.

public boolean equals(Object obj) {   
        Item outro = (Item) obj;  
        return this.getId().equals(outro.getId());  
     }

quando for excluir é so chamar assim:

items.remove(item)

Espero ter ajudado

Kanin_Dragon

Você não consegue remover um objeto de uma Collection enquanto realizar um “for” da mesma.

Uma solução e utilizar Iterator você pode varrer o Iterator e utilizar seu “iterator.remove.” assim seu iterator vai remover a referencia do elemento contido na collection.

Criado 4 de fevereiro de 2011
Ultima resposta 5 de fev. de 2011
Respostas 9
Participantes 6