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

7 respostas
S

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

public void SalvarCadastro()    {  
        ContextoDados db = new ContextoDados(this);
	
        db.InserirContatos(?, input.getText().toString());// seria spinner.getSelectedIndex() ???
        db.mensagem("Dados gravados") ;  
     
}

E aqui?

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

Agradeço a todos, desde já.

7 Respostas

E

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

S

Certo. E como ficaria?

public void SalvarCadastro()    {  
        ContextoDados db = new ContextoDados(this);
	
        db.InserirContatos(spinner.getSelectedIndex(), input.getText().toString());// seria spinner.getSelectedIndex() ???
        db.mensagem("Dados gravados") ;  
     
}
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();  
    }
    
}

Assim?

E

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:

S

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 ?

E

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

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

S

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

Agradeço

Criado 21 de novembro de 2012
Ultima resposta 23 de nov. de 2012
Respostas 7
Participantes 2