Well, something crazy is happening, in a list I have several items where I can change values, but when I increment these values and roll the screen down and up the values are zeroed.
Another problem is when I exit and return to the screen it resets all options that I had previously filled.
WhenIsearchtheitemsandreturnsuccessfullyImountthescreenlikethis:
privatevoidsucessoResposta(Stringresposta){RetornoComidaretornoComida;try{//DesserializaarespostaretornoComida=JSONParser.parseComida(resposta);//Conseguiudesserializararesposta,verificasehouvesucessoif(retornoComida.isSucesso()){txtTitulo.setText(retornoComida.getComida().getTituloComida());txtIngredientes.setText(retornoComida.getComida().getComposicaoComida());Picasso.with(this).load(retornoComida.getComida().getUrlImagem()).placeholder(R.drawable.ic_launcher).into(imgPrato);comidaAdicionar=retornoComida.getComida();comidaAdicionar.setMeia(retornoComida.getComida().isMeia());comidaAdicionar.setMeiaMaior(retornoComida.getComida().isMeiaMaior());tamanhos=retornoComida.getComida().getTamanhos();adapter=newGenericAdapter<>(this,tamanhos,R.layout.item_tamanho);adapter.setOnGetViewEvent(this);lstItens.setChoiceMode(ListView.CHOICE_MODE_SINGLE);lstItens.setAdapter(adapter);}else{//ExibeamensagemdeerroMessageUtil.showError(this,ResourceUtil.getString(retornoComida.getMensagem()));}}catch(Exceptione){//Falhaaodesserializarobjeto,exibeumamensagemMessageUtil.showError(this,R.string.erro_desconhecido);return;}}
Ihavetheoptionselectsoptionsthatlooklikethis:
@Click(R.id.btnEscolherOpcionais)publicvoidescolherOpcionais(){if(tamanhoDaComida==null){MessageUtil.showError(this,R.string.erro_selecione_o_tamanho);return;}Globales.getPedido().setCodRestaurante(restaurante.getCodigoRestaurante());Globales.getPedido().setCodCliente(Integer.valueOf(PreferencesUtils.getString(this,PreferencesUtils.PREFERENCIA_CODIGO_CLIENTE)));IntentintentEscolherOpcionais=newIntent(this,EscolherOpcionaisActivity_.class);intentEscolherOpcionais.putExtra(EscolherOpcionaisActivity.COMIDA,comidaAdicionar);intentEscolherOpcionais.putExtra(EscolherOpcionaisActivity.TAMANHO,tamanhoDaComida);intentEscolherOpcionais.putExtra(EscolherOpcionaisActivity.RESTAURANTE,restaurante);startActivityForResult(intentEscolherOpcionais,0);}
MyactivityChoosingoptionslookslikethis:
Methodinit();
@AfterViewspublicvoidinit(){mToolbar=(Toolbar)findViewById(R.id.toolbar_actionbar);setSupportActionBar(mToolbar);getSupportActionBar().setDisplayShowHomeEnabled(true);comida=(Comida)getIntent().getSerializableExtra(COMIDA);tamanho=(Tamanho)getIntent().getSerializableExtra(TAMANHO);restaurante=(Restaurante)getIntent().getSerializableExtra(RESTAURANTE);configurarOpcionais();}
MethodadicionarOpcionais();
privatevoidadicionarOpcional(Opcionalopcional,Integerquantidade){OpcaoPedidoopcao=newOpcaoPedido();opcao.setCodRestauranteOpcao(opcional.getCodRestauranteOpcao());opcao.setValorUnitario(opcional.getValorOpcao());opcao.setQuantidade(quantidade);opcao.setCdPedidoItemOpcao(opcional.getCdPedidoItemOpcao());opcao.setVlTotal(opcional.getValorOpcao()*quantidade);opcao.setCdPedidoItemOpcao(opcional.getCodRestauranteOpcao());listaOpcionais.add(opcao);}
The%complete%isasfollows:
@EActivity(R.layout.activity_opcionais)publicclassEscolherOpcionaisActivityextendsActionBarActivityimplementsGenericAdapter.OnGetViewListener<Opcional>{publicstaticfinalStringTAMANHO="tamanho_obj";
public static final String RESTAURANTE = "resturante_obj";
public static final String COMIDA = "comida_obj";
Toolbar mToolbar;
@ViewById
ListView lstOpcionais;
@ViewById
TextView txtItensCarrinho;
GenericAdapter<Opcional> adapter;
List<Spinner> spinnersItens;
Tamanho tamanho;
Pedido pedido;
ItemPedido itemPedido;
Restaurante restaurante;
Comida comida;
@ViewById
LinearLayout emptyView;
String prato;
List<OpcaoPedido> listaOpcionais = new ArrayList<OpcaoPedido>();
@Click(R.id.lytCarrinho)
public void carrinho(){
Intent intentCarrinho = new Intent(this, CarrinhoActivity_.class);
startActivity(intentCarrinho);
}
@AfterViews
public void init() {
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
comida = (Comida) getIntent().getSerializableExtra(COMIDA);
tamanho = (Tamanho) getIntent().getSerializableExtra(TAMANHO);
restaurante = (Restaurante) getIntent().getSerializableExtra(RESTAURANTE);
configurarOpcionais();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_opcionais, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Pega todos os opcionais escolhidos
int views = lstOpcionais.getChildCount();
int i = 0;
if (views > 0) {
while (i < views) {
OpcionalHolder tOlderHolder = (OpcionalHolder) lstOpcionais.getChildAt(i)
.getTag();
Integer quantidade = Integer.valueOf(tOlderHolder.txtQuantidade.getText().toString());
if(quantidade > 0){
Opcional opcional = adapter.getItem(i);
adicionarOpcional(tOlderHolder.opcional, quantidade);
}
i++;
}
}
Intent data = new Intent();
data.putExtra("OPCIONAIS", (Serializable) listaOpcionais);
setResult(RESULT_OK, data);
finish();
return super.onOptionsItemSelected(item);
}
private void configurarOpcionais() {
adapter = new GenericAdapter<>(this, tamanho.getOpcionais(),
R.layout.item_opcional);
adapter.setOnGetViewEvent(this);
lstOpcionais.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lstOpcionais.setAdapter(adapter);
lstOpcionais.setEmptyView(emptyView);
lstOpcionais.invalidate();
}
@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.txtQuantidade.setText("0");
//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);
}
}
@Override
public void onResume(){
super.onResume();
}
private void adicionarOpcional(Opcional opcional, Integer quantidade) {
OpcaoPedido opcao = new OpcaoPedido();
opcao.setCodRestauranteOpcao(opcional.getCodRestauranteOpcao());
opcao.setValorUnitario(opcional.getValorOpcao());
opcao.setQuantidade(quantidade);
opcao.setCdPedidoItemOpcao(opcional.getCdPedidoItemOpcao());
opcao.setVlTotal(opcional.getValorOpcao() * quantidade);
opcao.setCdPedidoItemOpcao(opcional.getCodRestauranteOpcao());
listaOpcionais.add(opcao);
}
private void removerOpcional(Opcional item) {
}
}
I'll try to add more detail to the question while I find out.