Remover posição de um ArrayList ?

3 respostas Resolvido
java
W

Bom dia pessoal.

Estou bolando um cadastro de usuários onde cada checkbox é a permissão para uma janela do meu sistema, então quando eu dou um salvar, criei um método para adicionar e remover o nome de uma janela em um ArrayList, ele adiciona porem na hora de remover um index preciso verificar antes se esse index realmente está vazio para então executar o array.remove(‘janela’), se não ele da erro pois ele não encontrou uma posição na minha lista com o nome passado.

image

public void permissoesJanelas() {
        if (opFun.isSelected() == true) {
            janelas.add("frm_func");
        } else {
            janelas.remove(janelas.indexOf("frm_func"));
        }

        if (opEpi.isSelected() == true) {
            janelas.add("frm_epi");
        } else {
            janelas.remove(janelas.indexOf("frm_epi"));
        }

        if (opForn.isSelected() == true) {
            janelas.add("frm_forn");
        } else {
            janelas.remove(janelas.indexOf("frm_forn"));
        }

quando ele vai pro else, preciso achar uma maneira de verificar se realmente existe esse valor no array pra depois executar o .remove()

3 Respostas

L
Solucao aceita

Crie um método responsável por remover, e valide nele se o elemento existe:

public void permissoesJanelas() {
	if (opFun.isSelected() == true) {
		janelas.add("frm_func");
	} else {
		remover("frm_func");
	}

	if (opEpi.isSelected() == true) {
		janelas.add("frm_epi");
	} else {
		remover("frm_epi");
	}

	if (opForn.isSelected() == true) {
		janelas.add("frm_forn");
	} else {
		remover("frm_forn");
	}
}

public void remover(String value) {
	if(janelas.contains(value)) {
		janelas.remove(value);
	}
}
W

Obrigado amigo deu certinho, fiz a mesma coisa pro adiciona.

S

Outra alternativa:

public void permissoesJanelas() {
    janelas.clear(); // remove tudo
    
    // em seguida só adiciona os selecionados
    if (opFun.isSelected()) {
        janelas.add("frm_func");
    }
    if (opEpi.isSelected()) {
        janelas.add("frm_epi");
    }
    if (opForn.isSelected()) {
        janelas.add("frm_forn");
    }
}
Criado 3 de junho de 2019
Ultima resposta 3 de jun. de 2019
Respostas 3
Participantes 3