Gravar número do índice de um spinner no banco de dados

Boa tarde,

Estou com uma dúvida:

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

    return db.insert("Contatos", null, initialValues);  
} finally {  
    db.close();  
}

}[/code]

Agradeço a todos, desde já.

http://docs.oracle.com/javase/6/docs/api/javax/swing/JSpinner.html#getValue()

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).

Certo. E como ficaria?

[code]public void SalvarCadastro()    {  
    ContextoDados db = new ContextoDados(this);

    db.InserirContatos(spinner.getSelectedIndex(), input.getText().toString());// seria spinner.getSelectedIndex() ???
    db.mensagem("Dados gravados") ;  

}
[/code]

[code]public long InserirContato( Object id_grupos , String nome) {
// SQLiteDatabase db = getReadableDatabase();
SQLiteDatabase db = getWritableDatabase(); //observação
try {
ContentValues initialValues = new ContentValues();
initialvalues.put(“Id_Grupos”,id_grupos);
initialValues.put(“nome”, nome);

    return db.insert("Contatos", null, initialValues);  
} finally {  
    db.close();  
}

}[/code]

Assim?

Eu não escrevi “getSelectedIndex”. Eu passei um link para outro método, não getSelectedIndex. Favor clicar no link :slight_smile:

Se o link não estiver abrindo, pelo menos tente ler o que aparece no link :frowning:

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

Soruji, desculpe que eu não vi que você está usando um Spinner do Android ( http://developer.android.com/guide/topics/ui/controls/spinner.html ), não um JSpinner do Swing.

No seu caso, provavelmente você terá de sobreescrever o método onItemSelected (veja o exemplo na página que lhe passei. )

De qualquer maneira, não machuca olhar a documentação:

http://developer.android.com/reference/android/widget/Spinner.html

Ainda não consegui compreender. Poderia postar um exemplo pra eu me basear?

Agradeço