Good afternoon, I'm creating a shopping cart where you have a recyclerview listing the products, next to each product has a + or - quantity field that will have the function of adding and increasing the quantity of product but the problem is that when I change the quantity of a product automatically this amount also goes to other lines, interspersed with 10 out of 10, I know this is because the middle recyclerview loads 10 out of 10 and goes cleaning, so I do not know how to solve this, follow code and below reference image
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;
}
}
}