Ver mensagens sem resposta | Ver tópicos ativos Hoje é 17 Ago 2019, 13:35



Responder Tópico  [ 1 Mensagem ] 
 Remover itens especificos repetidos de uma ArrayList 
Autor Mensagem
What is Android?
What is Android?

Data de registro: 18 Set 2018, 12:43
Mensagens: 1
Mensagem Remover itens especificos repetidos de uma ArrayList
Olá. Gostaria da ajuda de vocês para eliminar apenas da ListView os dados iguais em uma coluna “produtos” do meu database Firebase, com valores maiores e deixar visivel apenas o que tem o valor menor na coluna “valor”. No código já exibo a ListView filtrada, mas quando tem mais de dois, três ou mais, continua apresentando dois itens iguais.
Este é a parte do código na Activity que exibe a ListView da ArrayList:


spRelatorio.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(final AdapterView<?> parent, View view, final int position, final long id) {

                final String idUser = mAuth.getCurrentUser().getUid();
                final String idPro = spRelatorio.getSelectedItem().toString();

                if(position != 0 && idPro.equals("Global")){
                    final ListView listView = (ListView) findViewById(R.id.listViewGlobal);
                    cotacao = new ArrayList<>();
                    adapter = new CotacaoAdapter(GlobalActivity.this, cotacao);
                    listView.setAdapter(adapter);

                    final List<String> listpro = new ArrayList<String>();
                    final List<Double> listvlr = new ArrayList<>();

                    txtTipoRel.setText(String.valueOf("Relatório de Cotação Global"));
                    textViewGbNome.setText(String.valueOf(" PRODUTOS/COTAÇÃO "));
                    textViewGbValor.setText(String.valueOf(" VALOR "));
                    textViewGbQtd.setText(String.valueOf(" QTD"));
                    spRelatorio.setSelection(0);

                    progressDialog.setMessage("Gerando Relatório, Aguarde!");
                    progressDialog.show();

                    final DatabaseReference bdCotacao;
                    bdCotacao = FirebaseDatabase.getInstance().getReference();
                    bdCotacao.child("bd_cotacoes").orderByChild("produtoCotacao").addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            cotacao.clear();
                            String sp;
                            Double sv;
                            for (DataSnapshot dados:dataSnapshot.getChildren()) {
                                Cotacao relGlobal = dados.getValue(Cotacao.class);
                                Collections.sort(cotacao, new OrdenadaPorValor());

                                if (!cotacao.contains(relGlobal)) {
                                    cotacao.add( relGlobal );
                                }
                               
                                listpro.add(dados.child("produtoCotacao").getValue(String.class));
                                listvlr.add(dados.child("valorCotacao").getValue(Double.class));

                                Iterator itp = listpro.iterator();
                                Iterator itv = listvlr.iterator();

                                while (itp.hasNext()) {
                                    sp = (String) itp.next();
                                    sv = (Double) itv.next();
                                    for(int i = 0; i < cotacao.size(); i++) {
                                        Cotacao p = cotacao.get(i);
                                        if (p.getProdutoCotacao().equals(sp) && p.getValorCotacao() < sv) {
                                            System.out.println(sp+" "+p.getValorCotacao()+" < "+sv);
                                            cotacao.remove(p);
                                        }
                                    }
                                    itp.remove();
                                }
                            }
                            adapter.notifyDataSetChanged();
                            progressDialog.dismiss();
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });
                }
 


Este é o meu Adapter:

public class CotacaoAdapter extends ArrayAdapter<Cotacao> {

    private ArrayList<Cotacao> cotacoes;
    private Context context;

    public CotacaoAdapter(Context c, ArrayList<Cotacao> objects) {
        super(c, 0, objects);

        this.context = c;
        this.cotacoes = objects;
    }

    @Override
    public int getCount() {
        return cotacoes.size();
    }

    @Override
    public Cotacao getItem(int position ) {
        return cotacoes.get( position );
    }

    @Override
    public long getItemId( int position ) {
        return position;
    }


    @NonNull
    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {

        View view = null;

        if (cotacoes != null) {

            LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

            view = inflater.inflate(R.layout.lista_cotacao, parent, false);

            TextView textViewNome = (TextView) view.findViewById(R.id.textViewNome);
            TextView textViewValor = (TextView) view.findViewById(R.id.textViewValor);
            TextView textViewQtd = (TextView) view.findViewById(R.id.textViewQtd);

            Cotacao cotacao2 = cotacoes.get(position);
            textViewNome.setText(cotacao2.getProdutoCotacao());
            textViewValor.setText(cotacao2.getValorCotacao().toString());
            textViewQtd.setText(cotacao2.getQtdCotacao());

        }

        return view;
    }

}
 


Esta é a class do BD:

public class Cotacao {

    public String key;
    private String uid;
    private String produtocotacao;
    private Double valorcotacao;
    private String qtdcotacao;
    private String nome;
    private String datact;


    public Cotacao() {
    }

    public void salvarCT(DatabaseReference.CompletionListener... completionListener) {
        DatabaseReference referenciaFirebase = ConfiguracaoFirebase.getFirebase()
                .child("bd_cotacoes").child(uid);

        if (completionListener.length == 0) {
            referenciaFirebase.setValue(this);
        } else {
            referenciaFirebase.setValue(this, completionListener[0]);
        }
    }

    @Exclude
    public String getID() {
        return uid;
    }

    public void setID(String uid) {
        this.uid = uid;
    }

    public String getProdutoCotacao() {
        return produtocotacao;
    }

    public void setProdutoCotacao(String produtocotacao) {
        this.produtocotacao = produtocotacao;
    }

    public Double getValorCotacao() {
        return valorcotacao;
    }

    public void setValorCotacao(Double valorcotacao) {
        this.valorcotacao = valorcotacao;
    }

    public String getQtdCotacao() {
        return qtdcotacao;
    }

    public void setQtdCotacao(String qtdcotacao) {
        this.qtdcotacao = qtdcotacao;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    public void setDataCt(String datact) {
        this.datact = datact;
    }

    public String getDataCt() {
        return datact;
    }

    @Override
    public String toString() {
        return nome;
    }

}
 


Por favor alguém pode me dar uma dica de como fazer esta tarefa, exibindo apenas um item de cada produto igual na ArrayList e o item com o menor valor, somando as quantidades deles. Agradeço.


Você não tem permissões suficientes para ver os arquivos anexados nesta mensagem.


18 Set 2018, 13:15
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 1 Mensagem ] 

Quem está online

Usuários vendo este fórum: Adeja, ademir.carvalhojr, Alessandro Tavares, alexandrefett, alexcost2002, alylson, Andre Brito, andrelom, Andrey, ARAKINIDIO, arkanjo, avsouza, Bass, blurkness, Bravox, brazucx, brenda, brenno, Bruno, BrunoO, C-3PO, caciara, caiodemarco, Captain Typho, cavenaghi, celson, cesao, CKorneLL, cleber, cleberkct, Costa, Cristranus, d.paim, danilosouza, dirceuconte, dr.faro, Dudi_FC, e-azuos, ederson_4, edwarvelarde, eloilton, emersonbarros, Erik Patekoski, erikopa, erosvaldo, EvertonLB, fabiano_eletro, fraga, Francisco_Geraldo, freina, furlanrapha, gamito, geeks, guiba_picolino, gutem25, gutodias, hbarroco, helder84, Henrique Ferraz, HyagoRules, ismaels, jairo, jairodealmeida, jeanbr07, jorgeFernandes, José Guilherme, julianofischer, juliaojunior, lafamac, leanderdulac, leeeeooooooo, levita, LForce, lucasmadeira, LucasNascimento, Lucious, luizneto79, marinho5, mauriciobreide, Mayara Trevisol, Mayron Cimardi, mcurtis, Microdesk, Mig, mikasjau, MpassosT, mtomazzi, nardosnt, navegador, neosun, Newton Barbosa, nglaubervasc, Nidio Dolfini, nina.rm, nirvana, nishimura.ichigo, nivea, nq6, onaiggac, otium, otpor, Patrick, paulanegreiros, paulo.esantos, persiomotta, Philipe Alves, phobos, phsantos, poponeis, Princesa Léia Organa, pumadeejay, r.wil, Rafael Alencar, ramonsa, renegheller, rfrafa, rfrafael, Rodrigo, romuloff, romulotales, rtodao, rubens_olv, sephct, shadow, sidnei.gs, silvio.carlos, skcratch, sobrinho, srsilveira, tassiovirginio, tChAnDy, Teodoro, thanaptos, tiagoxv, ton.soares, Transtago, unnamedd, Vector, Velhinho, VILESOFT, viniciusluiz, weber, wender, wingdoido, xikin, yuri82, Zam Wesell e 24 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi