Substitute for onGetView in holder

0

I'm having problems with onGetView when I have a large list of items and I change for example the quantity of one of them, and roll the page it's setting this number to another item.

I tried to do several things in the method, but I did not have success, but it still keeps updating.

My method today is programmed like this:

@Override
public void onGetView(final Opcional item, View view, boolean isNewView, int position) {
    try {
        final OpcionalHolder viewHolder ;

        // Verifica se há uma nova view que foi inflada agora
        if (isNewView) {
            // Caso seja uma nova view, criamos o holder e encontramos todos
            // elementos do layout
            viewHolder = new OpcionalHolder();
            viewHolder.txtOpcional = (TextView) view
                    .findViewById(R.id.txtOpcional);
            viewHolder.txtQuantidade = (TextView) view
                    .findViewById(R.id.txtQuantidade);
            viewHolder.btnRemover = (Button) view
                    .findViewById(R.id.btnRemover);
            viewHolder.btnAdicionar = (Button) view
                    .findViewById(R.id.btnAdicionar);

            // Guarda na tag
            view.setTag(viewHolder);
        } else {
            // Caso seja uma view que esta sendo reutilizada, obtemos o
            // cache do findview
            viewHolder = (OpcionalHolder) view.getTag();
        }

        Money preco = new Money(BigDecimal.valueOf(item.getValorOpcao()));
        viewHolder.txtOpcional.setText(item.getTituloOpcao() + " - "
                + preco.toString());
        //viewHolder.btnRemover.setEnabled(false);

        viewHolder.btnRemover.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Decrementa a quantidade
                int quantidade = Integer.valueOf(viewHolder.txtQuantidade
                        .getText().toString());
                if (quantidade > 0) {
                    removerOpcional(item);
                    quantidade--;
                    viewHolder.txtQuantidade.setText(String
                            .valueOf(quantidade));
                }

            }
        });

        viewHolder.btnAdicionar.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Incrementa a quantidade
                int quantidade = Integer.valueOf(viewHolder.txtQuantidade
                        .getText().toString());
                if (quantidade < 99) {
                    quantidade++;
                    viewHolder.txtQuantidade.setText(String
                            .valueOf(quantidade));
                }
            }
        });
        //viewHolder.opcional = item;

    } catch (Exception e) {
        NegocioLog.inserir(Log.AVISO, e);
    }
}

Is there a substitute, or is there any way to block this natural resource?

    
asked by anonymous 30.05.2017 / 15:46

0 answers