Ir para conteúdo
Alex Oliveira Dos Santos

Recyclerview alterando informações a cada 10 linhas automaticamente

Recommended Posts

Boa tarde, estou criando um carrinho de compras onde tem uma recyclerview listando os produtos, ao lado de cada produto tem um campo de quantidade + ou - que teram a função de adicionar e aumentar a quantidade de produto, mas o problema é que quando eu altero a quantidade de um produto automaticamente esta quantidade tambem vai para outras linhas, intercaladas de 10 em 10, sei que isso é porque o recyclerview meio que carrega de 10 em 10 e vai limpando, soque eu nao sei como resolver isso, segue código e abaixo imagem de referencia

 

public class ProdutosCodBarrasAdapter extends RecyclerView.Adapter<ProdutosCodBarrasAdapter.ViewHolderProdutos> {

    private List<Produto> dados;
    private List<PedidoItens> dados2;
    public Button actionProdMais;
    public Button actionProdMenos;
    public TextView txtQtd;
    private TabelaPreco tabelaPreco;
    private TabelaPrecoProdutoRepositorio tabelaPrecoProdutoRepositorio;
    public Double varBaseValor;
    public int varCodProduto;
    public Double passaQtd;
    public Produto[] produto;
    public String varprecoBaseNovoAjuste;
    public int varCodProdutoExcluir;
    public int varCodProdutoItemExcluir;
    private SQLiteDatabase conexao;
    private DadosOpenHelper dadosOpenHelper;
    public int varB;
    public int varC;
    public int varD;
    public String varE;
    public static final String NOME_PREFERENCE = "INFORMACOES_LOGIN_AUTOMATICO";
    public int cli_emp_id;



    public ProdutosCodBarrasAdapter(List<Produto> dados){
        this.dados = dados;
    }

    @NonNull
    @Override
    public ProdutosCodBarrasAdapter.ViewHolderProdutos onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view = layoutInflater.inflate(R.layout.linha_carrinho_add, parent,false);//R.layout.linha_produtos, parent,false
        ViewHolderProdutos holderProdutos = new ViewHolderProdutos(view, parent.getContext());
        view.setBackgroundColor(0xFFF0F0F0);

        return holderProdutos;
    }


    @Override
    public void onBindViewHolder(@NonNull ProdutosCodBarrasAdapter.ViewHolderProdutos holder, int position) {
        if((dados != null) && (dados.size() > 0)) {
            DecimalFormat formatoDois = new DecimalFormat("##,###,###,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR")));
            formatoDois.setMinimumFractionDigits(2);
            formatoDois.setParseBigDecimal (true);

            //CARREGAR NA BINDVIEW aqui ele gera de 10 em 10, sempre ir atualizano a lista com as alterações (dados)

            Produto produto = dados.get(position);

            holder.listNomeProd.setText(produto.tab_id + " : " + produto.est_descricao_cor + " - " + produto.est_tam + " posição: "+position);//aqui morre
            //holder.listRefProd.setText(produto.prod_referencia.toString());//
            varprecoBaseNovoAjuste = new String(formatoDois.format(produto.tab_preco_final));

            varB = Integer.parseInt(produto.varCodPed);//codigo do pedido
            varC = Integer.parseInt(String.valueOf(produto.codigo_prod));//codigo produto
            varD = Integer.parseInt(String.valueOf(produto.est_id_cor));//codigo da cor
            varE = String.valueOf(produto.est_tam);//tamanho

            holder.listPrecoProd.setText(varprecoBaseNovoAjuste);//aqui? holder.listPrecoProd.setText(formatoDois.format(produto.tab_preco_final.toString()));
            varCodProdutoItemExcluir = produto.prod_id;
            holder.listPegaCodPedidoItem2.setText(String.valueOf(varCodProdutoItemExcluir));
            varBaseValor = produto.tab_preco_final;
            varCodProduto = produto.prod_id;

        }
    }

    @Override
    public int getItemCount() {
        return dados.size();
    }

    public class ViewHolderProdutos extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView listNomeProd;
        private TextView listPrecoProd;
        private ImageView idImagen;
        private TextView txtQtd;
        private double pegaQtd;
        private TextView listPegaCodPedidoItem2;

        public ViewHolderProdutos(@NonNull View itemView, final Context context) {
            super(itemView);
            listNomeProd = (TextView) itemView.findViewById(R.id.listNomeProd);
            listPrecoProd = (TextView) itemView.findViewById(R.id.listPrecoProd);
            txtQtd = (TextView) itemView.findViewById(R.id.txtQtd);
            passaQtd = Double.valueOf(txtQtd.getText().toString());
            listPegaCodPedidoItem2 = (TextView) itemView.findViewById(R.id.listPegaCodPedidoItem2);

            actionProdMais = (Button) itemView.findViewById(R.id.actionProdMais);
            actionProdMais.setOnClickListener(this);
            actionProdMenos = (Button) itemView.findViewById(R.id.actionProdMenos);
            actionProdMenos.setOnClickListener(this);

            //ATUALIZAR ELE NA VIEW


            //
            actionProdMenos.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    // get position
                    int pos = getAdapterPosition();

                    // check if item still exists
                    if(pos != RecyclerView.NO_POSITION){
                        Produto produto = dados.get(pos);

                        Double pegaQtd2 = Double.valueOf(txtQtd.getText().toString());
                        if(pegaQtd2 > 1.00){pegaQtd2--;}
                        txtQtd.setText(pegaQtd2.toString());

                        Double pegaPrecoProd2 = pegaQtd2 * varBaseValor;
                        DecimalFormat formatoDois2 = new DecimalFormat("##,###,###,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR")));
                        formatoDois2.setMinimumFractionDigits(2);
                        formatoDois2.setParseBigDecimal (true);
                        listPrecoProd.setText(formatoDois2.format(pegaPrecoProd2).toString());
                        passaQtd = Double.valueOf(pegaQtd2.toString());
                        Toast.makeText(v.getContext(), "TAM: " + produto.est_tam + "QTD: " + passaQtd, Toast.LENGTH_SHORT).show();

                        //ProdutosCodBarrasAdapter.this.notifyItemChanged(pos, "payload " + pos);
                        //Toast.makeText(v.getContext(), "You clicked " + produto.est_tam, Toast.LENGTH_SHORT).show();
                    }
                }
            });
            //

            //
            actionProdMais.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    // get position
                    int pos = getAdapterPosition();

                    // check if item still exists
                    if(pos != RecyclerView.NO_POSITION){
                        Produto produto = dados.get(pos);

                        Double pegaQtd = Double.valueOf(txtQtd.getText().toString());
                        pegaQtd++;
                        txtQtd.setText(pegaQtd.toString());
                        Double pegaPrecoProd = pegaQtd * varBaseValor;
                        DecimalFormat formatoDois = new DecimalFormat("##,###,###,##0.00", new DecimalFormatSymbols(new Locale("pt", "BR")));
                        formatoDois.setMinimumFractionDigits(2);
                        formatoDois.setParseBigDecimal (true);
                        listPrecoProd.setText(formatoDois.format(pegaPrecoProd).toString());
                        passaQtd = Double.valueOf(pegaQtd.toString());

                        Toast.makeText(v.getContext(), "TAM: " + produto.est_tam + "QTD: " + passaQtd, Toast.LENGTH_SHORT).show();
                    }
                }
            });
            //


        }

        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.actionProdMais:

                    break;
                case R.id.actionProdMenos:

                    break;
                default:
                    break;
            }
        }

    }
}

 

WhatsApp Image 2018-11-28 at 08.24.21 (1).jpeg

WhatsApp Image 2018-11-28 at 17.11.37.jpeg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Eziel Santos
      Da noite para o dia meu android studio começou a dar esse erro, não mechi em nada, eu tenho o código fonte, msmo se eu extrair um novo projeto sem nem ter mechido ele da esse erro, antes não dava.
      Error:No signature of method: com.crashlytics.tools.gradle.CrashlyticsPlugin.findObfuscationTransformTask() is applicable for argument types: (java.lang.String) values: [Debug]
      Me ajudem pfv.

    • Por aristofanes
      Tenho um projeto que compila na versão compileSdkVersion 28, e coloquei a mínima para minSdkVersion 18, utilizo o celular para testar o app e funciona perfeito o meu é android 8.0 e estou tentando testar em um celular com android 4.3.
      Ele instala mas ao abrir diz: app parou, o que seria isso?
    • Por Vitor Pereira dos Santos
      Preciso que a imagem que está guardada no Storage firebase apareça na listview customizada, no entanto não consigo setar a imagem no formato gs://, ja tentei utilizar o Picasso e o Glide, mas ambos precisam da URL da imagem, ou seja: http://.. E Não consigo pegar essa url. 
       
      O código é esse: https://github.com/VitorSantos1996/LivrariaFireBase
       
      Se tiver como estar a imagem no formato gs://.. ficará mais fácil.
    • Por gregory freire
      Boa tarde,
       
      Desenvolvi um aplicativo e gostaria de saber se existe alguma forma de forçar a execução dele para que o mesmo não pare o processo quando estiver em segundo plano no Sistema Android, da forma que funciona hoje, após 5 minutos o aplicativo é fechado se estiver em segundo plano. Se fazendo necessário novo login. 
      Outra duvida seria, quando o aplicativo está em segundo plano, como fazer para informações enviadas para o aplicativo sobreporem a tela do aparelho. 
       
      att,
       
      Gregory Freire
    • Por Motta
      Prezada(o)s
       
      Fiz uma besteira.
      Troquei o celular , achei que os contatos estavam no chip mas não estavam , inicializei o antigo.
      Perdi os contatos em resumo.
       
      Tem como :
      1) Importar um arquivo antigo .vcf que tenho no Windows ?
      2) Restaurar os contatos do antigo
       
      antigo samsung 7
      novo moto g 6
       
      grato
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.