GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Copiar objetos de uma lista para outra

android
Tags: #<Tag:0x00007f725b6cdef8>

#1

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.


#2

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.


#3

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


#4

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.


#5

Sim essa classe preenche um recyclerview com checbox.


#6

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.


#7

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<>();