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.