Como eu faço para gravar o índice de um spinner no banco de dados?
Esse método chama o método InserirContatos da minha classe BaseDAO, e nesse caso, eu vou passar dois parâmetros: o nome do contato, e qual grupo ele está associado (existe uma tabela de grupos, onde a tabela de contatos cria uma chave estrangeira referenciando-a).
Depois de associar o spinner ao xml, o que eu coloco como primeiro parâmetro no db.InserirContatos
[code] public void SalvarCadastro() {
ContextoDados db = new ContextoDados(this);
db.InserirContatos(?, input.getText().toString());// seria spinner.getSelectedIndex() ???
db.mensagem("Dados gravados") ;
} [/code]
E aqui?
[code]public long InserirContato( ? , String nome) {
// SQLiteDatabase db = getReadableDatabase();
SQLiteDatabase db = getWritableDatabase(); //observação
try {
ContentValues initialValues = new ContentValues();
initialvalues.put(“Id_Grupos”,?);
initialValues.put(“nome”, nome);
Ele retorna um Object, mas normalmente o Object é um objeto de uma classe que estende java.lang.Number. Faça um cast para java.lang.Number e chame o método intValue() ou doubleValue() (não sei o que você está usando no seu spinner, se é um Double ou um Integer).
Desculpe-me, só queria compreender melhor. Ainda estou meio perdido com relação ao que colocar no lugar da interrogação pois não se trata de nenhum tipo primitivo, certo ?
Vamos lá. Insisto em você clicar o link que lhe passei. Leia essa coisa com atenção, e depois leia a minha explicação abaixo.
spinner.getValue() tem o tipo de retorno java.lang.Object. Mas ele tem esse tipo de retorno porque um spinner, dependendo do seu SpinnerModel, pode conter valores que não são números - podem ser qualquer coisa, na verdade.
Como você está provavelmente usando o JSpinner “padrão”, sem frescuras, ele vai ser um valor numérico. Nesse caso, não sei se ele vai retornar um java.lang.Integer, um java.lang.Double ou sei lá o quê. Não vi a declaração do seu JSpinner.
Isso não importa, porque todos esses “wrappers” estendem a classe java.lang.Number. E como você deve saber, java.lang.Number tem alguns métodos, como intValue() (que retorna o valor como um int), doubleValue() (que retorna o valor como um double), e assim por diante,
Digamos que você queira o valor como um double. Então você pega o valor como:
double v = ((Number) spinner.getValue()).doubleValue();