>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Problema ao carregar dados no Spinner


Olá pessoal, importei o projeto Vendas para o meu eclipse, cadastrei alguns produtos via prompt de comando. Eles aparecem no spinner quando eu mando emular pela AVD, porém ao colocar o nome do cliente e clicar em salvar, ele gera uma mensagem de erro. O Vendas, parou.
Bom ai pendei que poderia ser um erro por que de repente esse tipo de projeto não roda na AVD, bom aí eu exportei para o meu celular, instalei certinho, mas ,eu spinner fica em branco. O que será que houve? O banco de dados fica só na máquia virtual, ou ele vai junto com a aplicação?



7 Respostas


ola pablo...

vc nao insere nada via codigo java???




Eu estou fazendo exatamente como no curso. Porem estou inserindo via prompt de comando, pois o Rafael enfatizou que como esse app foi feito para fins didaticos, se consideraria que os dados já estariam gravados no banco. Entao decidi inserir via prompt de comando. Eles são vizualizados no spinner, mas não consigo salvar o nome do cliente, aparece O Vendas parou. Extão decidi exportar para o meu celular, também não deu certo, aí resolvi emular pelo celular, e deu a mesma coisa. Não sei o que fazer.




opa Pablo...

mostre a sua classe. .java p gente analisar




Minha classe novaVenda

public class NovaVendaActivity extends Activity implements LocationListener {


private double la;
private double lo;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nova_venda);


Spinner spProdutos = (Spinner)findViewById(R.id.spProdutos);

SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);


Cursor cursor = db.rawQuery("SELECT * FROM produtos ORDER BY nome ASC", null);

String[] from = { "_id", "nome", "preco"};
int[] to = {R.id.txvID, R.id.txvNome, R.id.txvPreco};

SimpleCursorAdapter ad = new SimpleCursorAdapter(getBaseContext(), R.layout.spinner, cursor, from, to);

spProdutos.setAdapter(ad);

db.close();
}

public void Salvar_Click(View view){

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
la = location.getLatitude();
lo = location.getLongitude();

SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);

Spinner spProdutos = (Spinner)findViewById(R.id.spProdutos);

SQLiteCursor dados = (SQLiteCursor)spProdutos.getAdapter().getItem(spProdutos.getSelectedItemPosition());

ContentValues ctv = new ContentValues();
ctv.put("produto", dados.getInt(0));
ctv.put("preco", dados.getDouble(2));
ctv.put("la", la);
ctv.put("lo", lo);

if(db.insert("vendas", "_id", ctv) > 0){
Toast.makeText(getBaseContext(), "Sucesso", Toast.LENGTH_LONG).show();
}
}

public void onLocationChanged(Location location) {
//la = location.getLatitude();
//lo = location.getLongitude();

}

public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}
}




bem , vc vai ter q colocar via codigo java p poder funcionar ou entao faca uma tela de cadastro dos produtos p poder funcionar




Criei essa classe para cadastrar juntamente com o XML, quando eu comento o codigo a seguir.
//Nova venda
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
la = location.getLatitude();
lo = location.getLongitude();

eu consigo cadastra e listar o id, produto, preco, la e lo (la e lo aparecem 0.0)

public class CadastrarProdutosActivity extends Activity {

EditText input_label = null;
EditText input_preco = null;

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

input_label = (EditText) findViewById(R.id.input_label);
input_preco = (EditText) findViewById(R.id.input_preco);

Button btButton = (Button) findViewById(R.id.btn_add);
btButton.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
SQLiteDatabase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE, null);

ContentValues ctv = new ContentValues();
ctv.put("nome", input_label.getText().toString());
ctv.put("preco", input_preco.getText().toString());

if(db.insert("produtos", "_id", ctv) > 0){
Toast.makeText(getBaseContext(), "Sucesso ao cadastrar o produto.", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getBaseContext(), "Ops! Não foi possível cadastrar o produto.", Toast.LENGTH_LONG).show();
}
db.close();
}
});

}




}




Ok. Consegui resolver, criei uma activity para cadastrar novos produtos e emulei pelo celular e deu certo. Pena que o nome do cliente que é digitado no campo input não aparece na lista de vendas, pois acho desnecessário esse campo, haja vista não ser utilizado. Valeu abraços.