Listview updating when scrolling page

0

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.

    
asked by anonymous 29.05.2017 / 14:21

0 answers