>
Como faço para salvar dados de um spinner em um db?
Eu estou utilizando um que pega dados já salvos em um db e mostra para o usuario, em uma janela eu crio e salvo o produto e na outra eu seleciono qual eu quero, até a parte de salvar e mostrar consegui fazer, mas não consigo salvar o produto que eu escoho no spinner, ele ta sempre salvando umas coisas locas, uma das que ele salvou foi "android.database.sqlite.SQLiteCursor@4053ef40.
Poderiam me ajudar a resolver isso?
ola patrik
tem este exemplo aqui
http://androidhive.info/2012/06/android-populating-spinner-data-from-sqlite-database/
ai depois vc adapta no seu projeto
sim andre a parte de listar os dados no spinner eu consegui fazer, o que nao consigo é gravar os dados do spinner no db
ola patrik ...
mostre a sua tela pra gente analisarmos
http://rlsystem.com.br/forum/disco/uploads/4aa9ea94718729ea36e1cb89a9f97f6d-Sem título.png
eh a parte que tem a caixa de texto que eu nao que comando usar
o problema so ta no produto?? o cliente ta vindo???
não não, eu consigo listar os dois em seus respectivos spinner, isso é tranquilo, eu não consigo é gravar os dados desses spinners no banco.
entao mostra os codigos dos spinners
patrik
seu problema é pq vc naum ta fazendo isso aki , por exemplo
spEstados.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view, int posicao, long id) {
// TODO Auto-generated method stub
Toast.makeText(AndroidConrole.this, "Você clicou em " estados.get(posicao), Toast.LENGTH_LONG).show();
}
ai se vc fizer o exemplo ai de cima coloca numa variavel , no caso pro exemplo acima ficaria assim
estado = estados get(posicao);
depois vc colocaria no seu exemplo de vendas_click, no meu exemplo ficaria assim
ctv.put("estados", estado)
(...)
vou te mandar meu fonte ai vc faz isso pra mim e deixa tudo o que vc fez comentado, so comenta nao precisa escrever nada, que dai leio o seu ultimo post e consigo entender, porque vc falando assim pra mim nao é muito clara entende
http://rlsystem.com.br/forum/disco/uploads/6d1d1cb4a7f1ab28d61666ed515e820f-Ibr- copia salva.zip
opa patrik
o que eu estou querendo dizer é q vc naum deve fazer desse seu jeito p fazer a selecao do objeto
vc deve fazer deste jeito como vc pode ver abaixo:
spClientes_venda.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view,
int posicao, long arg3) {
// TODO Auto-generated method stub
SQLiteCursor c = (SQLiteCursor)parent.getAdapter().getItem(posicao);
clientes = c.getString(1).toString();
e tambem naum declare o spinner dentro do oncreate , declare ele antes do oncreate ai vc naum precisa criar no oncreate e no click do botao
e tambem declare o clientes antes do oncreate... ai vai dar certo... qualquer duvida assista o android gratuito q la o rafael explica direitinho.... la ele ensina como fazer numa lista mas dar pra colocar essa informacao num spinner
o que eu faço com esse clientes que tem aqui "clientes" = c.getString(1).toString(); ?
coloque la no click do botao na parte q ta
(...)
ctv.put("clientes", clientes)
(...)
mas não se esqueca de declarar antes do oncreate...
String clientes ;
coloque naquela parte
ctv.put("cliente", spClientes_venda.getSelectedItem().toString());
ele ta passando o parametro em branco agora, vou te mostrar o que fiz
primeiro declarei o clientes String clientes;
depois coloquei o codigo que vc me falou
spClientes_venda.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view,
int posicao, long arg3) {
// TODO Auto-generated method stub
SQLiteCursor c = (SQLiteCursor)parent.getAdapter().getItem(posicao);
clientes = c.getString(1).toString();
}
public void onNothingSelected(AdapterView> parent) {
}
});
e por fim alterei a parte que te pedi ctv.put("cliente", clientes);
coloque o logcat no click do botao depois do
(...)
if(db.insert ("venda", "_id", ctv) > 0 )
Log.d("ctv", ctv.toString);
(...)
e poste aqui o resultado
o resultado é esse produto=null cliente=null
agora coloque um logcat
(...)
c.getString(1).toString();
Log.d("clientes", clientes);
(...)
nesse nao aparece nada nao aparece no log
vc nao axa melhor me ajudar plo skype?
se quiser me add ai pdallanora
estranho.... vc adicionou os dados no cliente....
qdo eu chegar em ksa.. eu te ajudo.....
sim adicionei certinho
que horas vc chega?
andre, poderia me ajudar aqui?
opa patrik
estava viajando , desculpa....
feliz ano novo...
mostre o seu codigo do novavenda.java.. por favor
ola patrik
dê uma olhada neste link
http://androidbrasilprojetos.org/android/introducao-a-banco-de-dados-android-parte-3-com-simplecursoradapter/
se vc achar muito complicado este exemplo tem este aki...
http://helpdev.com.br/2012/01/23/android-criando-um-listview-personalizado/
bom dia andre feliz ano novo
nao respondi ontem porque por ventura passei mal o dia todo, nem pude ir trabalhar
vou lhe mandar meu codigo completo para voce dar uma olhada acho que é melhor do que te mandar apenas a classe NovaVenda
http://rlsystem.com.br/forum/disco/uploads/a0d85f27d0c3b1564a15b284bbc59431-Ibr- copia salva.zip
eu tava dando uma olhado em alguns artigos e encontrei bastante gente que utiliza esse codigo pra fazer a inserção de dados do spinner no db
String sql = "INSERT INTO vendas (produto, preco) VALUES ('"
// spNome.getContext().toString() "','"
spinnerProduto "','"
spinnerCliente "')";
db.execSQL(sql);
sera que no meu caso não é assim que deve ser feito também?
O que vc acha?
Olá Patrick
Por que você não pega os itens dele, faz um loop e joga via comando insert.
É igual fazer um loop no Adapter dele, assim como no ListView.
e como eu faço isso Rafael?
Patrick
Da uma olhadinha lá no curso de Android Online e principalmente o Android Best Practices, que vai dar uma ótima noção de como trabalhar com isso.
Abaixo tem um código, tenta adaptar de acordo com o que tu precisa, ali ele varre um spinner e vai pegando os itens. Dentro do for você pode fazer o insert. Para pegar o item. Veja no exemplo
Spinner s = (Spinner) findViewById(R.id.spinner_id);
for(i=0; i < adapter.getCount(); i++) {
// Pegar o nome do item
String nome = adapter.getItem(i).toString();
// Em baixo faz teu insert usando o rawQuery do SqliteDatabase.
}
Perfeito Rafael, você me deu uma otima ideia e deu certo muito obrigado