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?