Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

como popular o valor do Spinner com dados obtidos da consulta ao banco de dados

Boa tarde, estou com problema ao completar um Spinner com valor obtido através de uma chamada de alteração de dados. No método preencheFormulario está assim :

 public void preencheFormulario(Produto produto) {

        campoNome.setText(produto.getNome());
    /* 
    O campoStatus deveria receber o valor de acordo com foi cadastrado, porém não encontro solução para criação do adapter.
    */
    campoStatus.setAdapter(???) 

        campoDescricao.setText(produto.getDescricao());
        campoEstoqueMin.setText(String.valueOf(produto.getMinEstoque()));
        campoEstoqueMax.setText(String.valueOf(produto.getMaxEstoque()));

        this.produto = produto;
    }

No FormularioActivity.java no método onCreate, é instanciado o Spinner de acordo.

campoStatus = (Spinner) findViewById(R.id.formulario_status); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.status_array,android.R.layout.simple_spinner_item); campoStatus.setAdapter(adapter);

O status_array está com os seguintes valores :

string-array name="status_array">
        <item>Ativo</item>
        <item>Desativo</item>
    </string-array>

Poderiam me dar uma auxilio?

Att.,

13 respostas

Ana Paula, tudo bem ?

Seu Spinner só tem duas opções ? Não entendi muito bem seu problema, desculpa

Basicamente sim, mais pra efeito de testes por enquanto. Vamos lá, feito insert no banco de dados, desejo fazer a alteração dos dados, quando o registro é selecionado, os campos respectivos ja vem preenchidos do banco, como o nome, descrição e estoque minimo e maximo, aos quais são disponibilizado em um EditText. Porém desejo que no Spinner venha a opção selecionada com base no valor do banco de dados.

A primeira parte é mais tranquila de fazer.

Você no momento de criar o adapter basta você passar a lista do banco.

Hmmm, poderia exemplificar por gentileza ;) .


public void preencheFormulario(Produto produto) {

        campoNome.setText(produto.getNome());
    /* 
    O campoStatus deveria receber o valor de acordo com foi cadastrado, porém não encontro solução para criação do adapter.
    */
    XXXXDao dao = new XXXXDao(ctx);
    List<XXXX> lista = dao.buscaBaseadoNo(produto);
    SeuAdapter adapter = new SeuAdapter(lista);

    campoStatus.setAdapter(adapter); 

        campoDescricao.setText(produto.getDescricao());
        campoEstoqueMin.setText(String.valueOf(produto.getMinEstoque()));
        campoEstoqueMax.setText(String.valueOf(produto.getMaxEstoque()));

        this.produto = produto;
    }

Então, nesse caso não estaria replicando a informação? Pois no produto.getStatus() retorna a informação que ja foi consultada no banco, a questão em si é colocar a String no campoStatus.setAdapter utilizando o resultado do .getStatus.

Eu não sabia que seu produto tinha isso :S haha

Pode colocar a sua tela aqui para vermos ?

Acho que não tem necessidade de um spinner se for isso

Usa esse site : https://pasteboard.co/

Ana Paula,

Queria entender a sua tela, mas a do app que vai ter esse spinner

Bom dia Matheus,

Segue a sequência das telas

1 - https://pasteboard.co/GzFQ6bl.png 2 - https://pasteboard.co/GzFQsO2.png 3 - https://pasteboard.co/GzFQCYW.png 4 - https://pasteboard.co/GzFQNH1.png 5 - https://pasteboard.co/GzFQXX6.png 6 - https://pasteboard.co/GzFR6yr.png

Peço que repare no Spinner quando é feito a inserção e depois quando o produto é selecionado para alteração. O que desejo é fazer com que o status salvo seja populado no spinner quando for alterado.

solução!

Agora eu entendi o que você tá fazendo hahaha

O que você precisa fazer é settar a posição que quer usar o método setSelection() que recebe a posição do item que você quer.

Espero ter ajudado.

Olá Matheus, bom dia, fiz uma verificação do campo e solucionou o problema.

if(produto.getStatus().equals("Ativo")){
            campoStatus.setSelection(0);
        }else{
            campoStatus.setSelection(1);
        }

Att.,

Legal Ana Paula, fico contente que tenha dado certo :D

O que precisar pode abrir um novo tópico !