Retrieve items from ListView

0

I'm trying to create a sales application, where in the order I select the product to be sold and click on an add button, and the selected product is thrown into a listview when the seller has finished selecting all products and add in the listview it clicks the conclude button, making all the inserts in the table, but I'm having trouble retrieving the items inside the table to make the inserts.

To put the items inside the listview I do this:

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 ProductsAdapter :

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 Order Products :

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;
    }
  }
}

this section:

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;
            }
        }
    });
}

This is where I'm trying to insert items into the listview.

    
asked by anonymous 11.05.2016 / 14:54

1 answer

3

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

In this case, I do not see a need for you to retrieve items from Listview since in your Produtos list all items are selected.

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 get 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

    
13.07.2016 / 14:29