Recover items from Listview

Asked

Viewed 245 times

0

I’m trying to create a sales app, where in the order I select the product to be sold and click on an add button, and the selected product is played into a listview, when the seller has finished selecting all the products and add in the listview he clicks on the finish button by doing all the Inserts in the table, but I’m having trouble recovering the items within the table to make the Inserts.

To put the items inside the listview I do this way:

Class Products:

package br.com.realsysten.venda;

public class Produtos {

  private String  id;
  private String descricao;
  private String quantidade;
  private String  preco;

  public Produtos(){

  }

  public Produtos(String id, String descricao, String quantidade, String preco){
    this.id = id;
    this.descricao = descricao;
    this.quantidade = quantidade;
    this.preco = preco;
  }

  public String getId(){
    return id;
  }

  public void setId(String id){
    this.id = id;
  }

  public String getPreco() {
    return preco;
  }

  public void setPreco(String preco) {
    this.preco = preco;
  }

  public String getQuantidade() {
    return quantidade;
  }

  public void setQuantidade(String quantidade) {
    this.quantidade = quantidade;
  }

  public String getDescricao() {
    return descricao;
  }

  public void setDescricao(String descricao) {
    this.descricao = descricao;
  }
}

Class Productosadapter:

public class ProdutosAdapter extends BaseAdapter {

  private LayoutInflater prodInf;
  private ArrayList<Produtos> produtos;

  public ProdutosAdapter(Context context, ArrayList<Produtos> produtos){
    this.produtos = produtos;

    prodInf = LayoutInflater.from(context);
  }

  @Override
  public int getCount() {
    return produtos.size();
  }

  @Override
  public Object getItem(int position) {
    return produtos.get(position);
  }

  @Override
  public long getItemId(int position) {
    return position;
  }

  @Override
  public View getView(int position, View view, ViewGroup parent) {
    Produtos produto = produtos.get(position);
    view = prodInf.inflate(R.layout.pedido_produto_modelo, null);

    ((TextView)view.findViewById(R.id.txlpId)).setText(produto.getId());
    ((TextView)view.findViewById(R.id.txlpDescricao)).setText(produto.getDescricao());
    ((TextView)view.findViewById(R.id.txlpqtd)).setText(produto.getQuantidade());
    ((TextView)view.findViewById(R.id.txlpPreco)).setText(produto.getPreco());

    return view;
  }
}

Class Pedidoproducts:

public class PedidoProdutoActivity extends AppCompatActivity {

  private ArrayList<String> arrayList;

  String quant;
  String stotal;
  String novoId;
  String novaDescricao;
  String novaQtd;
  String novoPreco;
  double dpreco;
  int iqtd;
  double dtotal;
  ProdutosAdapter produtosAdapter;
  ArrayList<Produtos> produtos;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pedido_produto);

    EditText data = (EditText) findViewById(R.id.edtData);
    final String currentDataTimeString = DateFormat.getDateInstance().format(new Date());
    data.setText(currentDataTimeString);
    produtos = new ArrayList<Produtos>();

    //SPINNER CLIENTE

    Spinner spCliente = (Spinner) findViewById(R.id.spCliente);
    SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);
    Cursor cursorCliente = db.rawQuery("SELECT _id, PAR_RAZAO_NOME FROM PARCERIA ORDER " +
            "BY PAR_RAZAO_NOME ASC", null);

    String[] fromCliente = {"_id", "PAR_RAZAO_NOME"};
    int[] toCliente = {R.id.txcId, R.id.txcNome};

    SimpleCursorAdapter adCliente = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner_cliente,
            cursorCliente, fromCliente, toCliente, 0);

    spCliente.setAdapter(adCliente);

    // SPINNER PAGAMENTO

    Spinner spPagamento = (Spinner) findViewById(R.id.spPagamento);
    Cursor cursorPag = db.rawQuery("SELECT _id, CPAG_DESCRICAO FROM CONDICAO_PAGTO ORDER" +
            " BY CPAG_DESCRICAO ASC", null);

    String[] fromPag = {"_id", "CPAG_DESCRICAO"};
    int[] toPag = {R.id.txpId, R.id.txpDescricao};

    SimpleCursorAdapter adPag = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner_pagamentos,
            cursorPag, fromPag, toPag, 0);
    spPagamento.setAdapter(adPag);

    // SPINNER CARTEIRA

    Spinner spCarteira = (Spinner) findViewById(R.id.spCarteira);
    Cursor cursorCar = db.rawQuery("SELECT _id, CAR_NOME FROM CARTEIRA ORDER BY CAR_NOME ASC",
            null);

    String[] fromCar = {"_id", "CAR_NOME"};
    int[] toCar = {R.id.txcaId, R.id.txcaNome};

    SimpleCursorAdapter adCar = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner_carteira,
            cursorCar, fromCar, toCar, 0);
    spCarteira.setAdapter(adCar);

    // SPINNER PRODUTOS

    Spinner spProdutos = (Spinner) findViewById(R.id.spProduto);
    Cursor cursorPro = db.rawQuery("SELECT _id, PRO_DESCRICAO, PRO_PUNIT_VENDA FROM PRODUTOS " +
            "ORDER BY PRO_DESCRICAO ASC",null);

    String[] fromPro = {"_id", "PRO_DESCRICAO", "PRO_PUNIT_VENDA"};
    int[] toPro = {R.id.txproId, R.id.txproDescricao, R.id.txproPreco};

    SimpleCursorAdapter adPro = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner_produtos,
            cursorPro, fromPro, toPro, 0);
    spProdutos.setAdapter(adPro);
    db.close();

    Button add = (Button) findViewById(R.id.btnAdd);
    add.setOnClickListener(new View.OnClickListener() {



        @Override
        public void onClick(View v) {


            ListView lstpro = (ListView) findViewById(R.id.lsProdutos);
            EditText eqtd = (EditText) findViewById(R.id.edtQuantidade);
            Spinner spProd = (Spinner) findViewById(R.id.spProduto);
            SQLiteCursor dados = (SQLiteCursor) spProd.getAdapter().getItem(spProd.getSelectedItemPosition());

            final BancoController crud = new BancoController(getBaseContext());
            final Cursor cursor = crud.carregaDadosByIdProd(dados.getInt(0));

            quant = String.valueOf(eqtd.getText());
            dpreco = dados.getDouble(2);

            iqtd = Integer.parseInt(quant);
            dtotal = dpreco * iqtd;

            stotal = String.valueOf(dtotal);

            novoId = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getProId()));
            novaDescricao = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getProDescricao()));
            novoPreco = stotal;
            novaQtd = quant;

            //ADAPTER PERSONALIZADO:

            Produtos item = new Produtos(novoId, novaDescricao, novaQtd, novoPreco);

            produtos.add(item);

            produtosAdapter = new ProdutosAdapter(getBaseContext(), produtos);

            lstpro.setAdapter(produtosAdapter);
            setListViewHeightBasedOnItems(lstpro);
        }
    });

    Button confirma = (Button) findViewById(R.id.btnConfirmar);
    confirma.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ListView lstprod = (ListView) findViewById(R.id.lsProdutos);

            int linhas = lstprod.getCount();
            for (int i = 0; i < linhas; i++ ){

                final BancoController crud = new BancoController(getBaseContext());
                crud.op = 2;


            }




        }
    });
  }

  public static boolean setListViewHeightBasedOnItems(ListView listView){

    ListAdapter listAdapter = listView.getAdapter();
    if(listAdapter != null){

        int numberOfItems = listAdapter.getCount();
        int totalItemsHeight = 0;

        for (int itemPos = 0; itemPos < numberOfItems; itemPos++){

            float px = 300 * (listView.getResources().getDisplayMetrics().density);

            View item = listAdapter.getView(itemPos, null, listView);
            item.measure(View.MeasureSpec.makeMeasureSpec((int)px, View.MeasureSpec.AT_MOST),
                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
            totalItemsHeight += item.getMeasuredHeight();
        }

        int totalDividersHeight = listView.getDividerHeight() * (numberOfItems - 1);
        int totalPadding = listView.getPaddingTop() + listView.getPaddingBottom();

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalItemsHeight + totalDividersHeight + totalPadding;
        listView.setLayoutParams(params);
        listView.requestLayout();

        return true;
    }else{
        return false;
    }
  }
}

that stretch:

Button confirma = (Button) findViewById(R.id.btnConfirmar);
    confirma.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ListView lstprod = (ListView) findViewById(R.id.lsProdutos);

            int linhas = lstprod.getCount();
            for (int i = 0; i < linhas; i++ ){
                final BancoController crud = new BancoController(getBaseContext());
                crud.op = 2;
            }
        }
    });
}

is where I’m trying to make the entry of the items inside the listview.

  • Post the code you implemented.

  • edited the post with more information

  • no one knows ??

1 answer

3


Good morning, From what I’ve interpreted in your code you have a global variable called Produtos and you will add each product selected in this list. This list is passed to Listview each time an Item is added.

In that case I see no need for you to retrieve the items from Listview once on your list Produtos are all selected items.

Button confirma = (Button) findViewById(R.id.btnConfirmar);
confirma.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        for (Produto produto: Produtos){
           insert(produto) // seu código para fazer o insert
        }
    }
});

}

Now if you still want to pick up the Listview item just do so:

Button confirma = (Button) findViewById(R.id.btnConfirmar);
    confirma.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ListView lstprod = (ListView) findViewById(R.id.lsProdutos);

            int linhas = lstprod.getCount();
            for (int i = 0; i < linhas; i++ ){
                Produto produto = (Produto) lstprod.getItemAtPosition(i)
                final BancoController crud = new BancoController(getBaseContext());
                crud.op = 2;
            }
        }
    });
}

I hope to help. Flw

Browser other questions tagged

You are not signed in. Login or sign up in order to post.