Copiar objetos de uma lista para outra

6 respostas
android
steniobarroso

Gente estou com um pequeno probleminha, tenho uma lista de objetos que tem vários atributos e gostaria de pegar apenas uma parte dos objetos dessa lista e passar para outra lista. Resumindo quero copiar de uma Lista para Outra apenas objetos selecionados. tipo copiar o objeto da posição 2, 5, 8.

6 Respostas

TerraSkilll

O que você quer dizer com lista? É um Listview?

Se o seu Listview estiver com seleção múltipla ativa, você pode iterar e obter os dados selecionados. Veja por exemplo: https://stackoverflow.com/questions/4590856/how-to-get-selected-items-from-multi-select-list-view

Abraço.

steniobarroso

Desculpa acho que esqueci de comentar é uma ArrayList >objeto de uma Classe.

TerraSkilll

Existe nessa classe que está na lista algum atributo que a identifique como selecionado? Um boolean, por exemplo.

Se sim, você pode iterar a lista e verificar essa propriedade antes de inserir na outra lista. Algo como:

Lista<ClasseQualquer> listaNova = new ArrayList<>();

for (ClasseQualquer c : listaAnterior){
  if (c.estaSelecionado()){
    listaNova.add(c);
  }
}

Acredito que dê para fazer algo mais compacto com lambdas, mas precisaria pesquisar como fazer isso.

Abraço.

steniobarroso

Sim essa classe preenche um recyclerview com checbox.

steniobarroso

Eu tenho um listener que me retorna a posição da minha lista principal. No momento estou fazendo dessa forma para pegar os valores.

if (produtomarcado.isChecked()) {

String nomeproduto = listadeObjetos.get(position).getNome_produto().toString();
listanova.get(position).setNome_produto(nomeproduto);

}else{

aqui código para retirar da listanova…

}

O problema é que dessa forma eu vou ter que passar todos os atributos para nova lista um por um, e se essa classe tivesse vários atributos.
Queria uma forma simples como essa.
listanova.add(listadeObjetos.get(position)); Mas isso não funciona dá um erro.

steniobarroso

Gente dessa forma resolveu meus problemas
listadecompras.add(listaObjProduto.get(position));

É que eu estava esquecendo de passar new Arraylist<>();
public static ArrayList listanova = new ArrayList<>();

Criado 4 de dezembro de 2017
Ultima resposta 4 de dez. de 2017
Respostas 6
Participantes 2