Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Como popular uma spinner?

Amigo creio que esse assunto ja foi tratado aqui, da uma pesquisada na lista...

Em 3 de janeiro de 2012 12:46, Fabiano - Carioca <fabianobalmeida@gmail.com> escreveu:
Bom dia irmãos,

Estou tentando popular spinners com informações do banco e estou com
dificuldades.

Estas spinners são dinâmicas (na sua quantidade e nas suas
informações).

Criar as spinners dinâmicas deu certo.

Recuperei os valores e enviei para um Log.i para testar e também deu
certo.

O problema é na hora de popular as spinners.

Estou tentando fazer assim

Segue o trecho do código.

[code]

case 5:

               List<OpcoesInfo> opcInf =
coletaDao.listaDadosSpinners(String.valueOf(recuperaIdInfo));

               int opcoesInfo =
coletaDao.listaDadosSpinners(String.valueOf(recuperaIdInfo)).size();

               nomeInfoTipo5.setText(infos.get(i).getNomeInfo());
               linearLayout.addView(nomeInfoTipo5);


// FOR PARA TESTAR AS INFORMAÇÕES

               for(int d = 0; d < opcoesInfo; d++){

                       Log.i(CATEGORIA, "DADOS: " +
opcInf.get(d).getNomeOpcao());

               }

            ArrayAdapter adaptador = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, opcInf);


adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

              escolha[i].setAdapter(adaptador);

              linearLayout.addView(escolha[i]);

           break;

[/code]


Fazendo desta forma ele popula o total de informações corretamente,
mas aparece deste jeito

 [code] [OpcoesInfo [codOpcao=1, nomeOpcao=Sim, descricaoOpcao=null,
codInfo=null], OpcoesInfo [codOpcao=2, nomeOpcao=Não,
descricaoOpcao=null, codInfo=null]]

[/code]

Eu preciso que as spinners sejam populadas com os nomes e que os IDs
sejam setados na hora da escolha para enviar ao o banco na hora de
salvar

Segue a classe completa

[code]

package br.com.mylims.controller;


import java.util.List;

import br.com.mylims.bean.Info;
import br.com.mylims.bean.OpcoesInfo;
import br.com.mylims.model.ColetaDao;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;

import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.Toast;

import android.widget.TextView;

public class TesteCadastroColeta_2 extends Activity{

   private static final String CATEGORIA = "coleta";


       private TextView nomeInfoTipo1;
       private TextView nomeInfoTipo2;
       private TextView nomeInfoTipo3;
       private TextView nomeInfoTipo4;
       private TextView nomeInfoTipo5;
       private EditText[] editText;
       private EditText[] texto;
       private EditText[] numerico;
       private EditText[] numericoFracionario;
       private EditText[] dataHora;
       private Spinner[] escolha;

      // private List<OpcoesInfo> opcoesInfo;

       ColetaDao coletaDao = new ColetaDao(this);


   public void onCreate(Bundle icicle){

       super.onCreate(icicle);

       Bundle extras = getIntent().getExtras();

       final String idAmostra = extras.getString("idAmostra");

       final List<Info> infos = coletaDao.listaColeta(idAmostra);

       ScrollView s = new ScrollView(this);
       s.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));

       LinearLayout linearLayout = new LinearLayout(this);
       linearLayout.setOrientation(LinearLayout.VERTICAL);

        final int totalDados =
coletaDao.listaColeta(idAmostra).size();

        editText = new EditText[totalDados];
        texto    = new EditText[totalDados];
        numerico = new EditText[totalDados];
        dataHora = new EditText[totalDados];
        numericoFracionario = new EditText[totalDados];
        escolha = new Spinner[totalDados];


        for (int i = 0; i < totalDados; i++){

            try{

           int recuperaTipoDado = infos.get(i).getCodTipoDado();  /
**RECUPERA O ID DO TIPODADO**/

           int recuperaIdInfo = infos.get(i).getCodInfo(); /
**RECUPERA O CDINFO**/

           /**CHAMA O METODO PARA POPULAR OS CAMPOS SPINNERS**/

           nomeInfoTipo1 = new TextView(this);
           nomeInfoTipo2 = new TextView(this);
           nomeInfoTipo3 = new TextView(this);
           nomeInfoTipo4 = new TextView(this);
           nomeInfoTipo5 = new TextView(this);

           editText[i] = new EditText(this); /**CAMPO DO TIPO TEXTO
QUE RECEBERA OS SEGUINTES CAMPOS (1-TEXTO, 2-NUMERICO, 3-NUMERICO
FRACIONARIO, 4-DATA E HORA)**/

           texto[i] = new EditText(this); /**CAMPO DO TIPO TEXTO**/
           numerico[i] = new EditText(this); /**CAMPO DO TIPO
NUMERICO**/
           numericoFracionario[i] = new EditText(this); /**CAMPO DO
TIPO NUMERICO FRACIONARIO**/
           dataHora[i] = new EditText(this); /**CAMPO DO TIPO **/

           escolha[i] = new Spinner(this);

           texto[i].setWidth(50);
           numerico[i].setWidth(50);
           numericoFracionario[i].setWidth(50);
           dataHora[i].setWidth(50);

           switch (recuperaTipoDado) {

           case 1:

               nomeInfoTipo1.setText(infos.get(i).getNomeInfo());
               linearLayout.addView(nomeInfoTipo1);
               editText[i] = texto[i];
               editText[i].setText("");
               editText[i].setHeight(40);

editText[i].setInputType(android.text.InputType.TYPE_CLASS_TEXT);
               editText[i].setId(recuperaIdInfo);

               linearLayout.addView(editText[i]);


           break;

           case 2:

               nomeInfoTipo2.setText(infos.get(i).getNomeInfo());
               linearLayout.addView(nomeInfoTipo2);

               editText[i] = numerico[i];
               editText[i].setText("");
               editText[i].setHeight(40);


editText[i].setInputType(android.text.InputType.TYPE_CLASS_NUMBER);
               editText[i].setId(recuperaIdInfo);

               linearLayout.addView(editText[i]);

           break;

           case 3:

               nomeInfoTipo3.setText(infos.get(i).getNomeInfo());
               linearLayout.addView(nomeInfoTipo3);

               editText[i] = numericoFracionario[i];
               editText[i].setText("");
               editText[i].setHeight(40);


editText[i].setInputType(android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL);
               editText[i].setId(recuperaIdInfo);

               linearLayout.addView(editText[i]);


           break;

           case 4:


               nomeInfoTipo4.setText(infos.get(i).getNomeInfo());
               linearLayout.addView(nomeInfoTipo4);

               editText[i] = dataHora[i];
               editText[i].setText("");
               editText[i].setHeight(40);


editText[i].setInputType(android.text.InputType.TYPE_CLASS_DATETIME);
               editText[i].setId(recuperaIdInfo);

               linearLayout.addView(editText[i]);

           break;

           case 5:

               List<OpcoesInfo> opcInf =
coletaDao.listaDadosSpinners(String.valueOf(recuperaIdInfo));

               int opcoesInfo =
coletaDao.listaDadosSpinners(String.valueOf(recuperaIdInfo)).size();

               nomeInfoTipo5.setText(infos.get(i).getNomeInfo());
               linearLayout.addView(nomeInfoTipo5);


               //LinearLayout lSpinner = new LinearLayout(this);

               for(int d = 0; d < opcoesInfo; d++){

                   Log.i(CATEGORIA, "DADOS: " +
opcInf.get(d).getNomeOpcao());


               }




             ArrayAdapter adaptador = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, opcInf);


adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

               escolha[i].setAdapter(adaptador);

              linearLayout.addView(escolha[i]);

           break;


           } // fim swith


       }catch (Exception ex) {

           Log.i(CATEGORIA, "Exception ex" + ex + "FOR: " + (i));
       }


    } // fim for



           LinearLayout linearLayout2 = new LinearLayout(this);
           linearLayout2.setOrientation(LinearLayout.HORIZONTAL);

           Button botaoCadastrar = new Button(this);
           botaoCadastrar.setText("CADASTRAR");
           linearLayout2.addView(botaoCadastrar);

           Button botalVoltar = new Button(this);
           botalVoltar.setText("VOLTAR");
           linearLayout2.addView(botalVoltar);



           /**BOTAO CADASTRAR**/

           botaoCadastrar.setOnClickListener(new
View.OnClickListener() {

               @Override
               public void onClick(View v) {

                   try {

                       for (int j = 0; j <totalDados; j++)
                       {

                           int recuperaTipoDado =
infos.get(j).getCodTipoDado();  /**RECUPERA O ID DO TIPODADO**/

                           int recuperaIdInfo =
infos.get(j).getCodInfo(); /**RECUPERA O CDINFO**/


                           switch (recuperaTipoDado) {
                               case 1:

                                   if
(texto[j].getText().toString().equals("")) {

Toast.makeText(TesteCadastroColeta_2.this, "DIGITE UM TEXTO!",
Toast.LENGTH_SHORT).show();
                                       Log.i(CATEGORIA, "DIGITE UM
TEXTO!");
                                   }

                               break;

                               case 2:


if(numerico[j].getText().toString().equals("")){

Toast.makeText(TesteCadastroColeta_2.this, "DIGITE UM NÚMERO
INTEIRO!", Toast.LENGTH_SHORT).show();
                                       Log.i(CATEGORIA, "DIGITE UM
NÚMERO INTEIRO!");
                                   }


                               break;

                               case 3:

                                   if
(numericoFracionario[j].getText().toString().equals("")) {


Toast.makeText(TesteCadastroColeta_2.this, "DIGITE UM NÚMERO
FRACIONÁRIO!", Toast.LENGTH_SHORT).show();
                                       Log.i(CATEGORIA, "DIGITE UM
NÚMERO FRACIONÁRIO!");
                                   }

                               break;

                               case 4:

                                   if
(dataHora[j].getText().toString().equals("")) {


Toast.makeText(TesteCadastroColeta_2.this, "DIGITE UMA DATA!",
Toast.LENGTH_SHORT).show();
                                       Log.i(CATEGORIA, "DIGITE UMA
DATA!");
                                   }

                               break;

                               case 5:

                                   if (escolha[j].equals("")) {

Toast.makeText(TesteCadastroColeta_2.this, "SELECIONE UMA OPÇÃO!",
Toast.LENGTH_SHORT).show();
                                   }

                               break;



                           }

                           Log.i(CATEGORIA, "ID INFO: " +
recuperaIdInfo);


                       }

                   } catch (Exception e) {

                       Log.i(CATEGORIA, "Erro grave botao
cadastroColeta" + e);
                   }



               }

           });


           botalVoltar.setOnClickListener(new View.OnClickListener()
{


               @Override
               public void onClick(View v) {

                   //telaListaAmostra();

                   Log.i(CATEGORIA, "teste btn voltar");
               }


           });


           linearLayout.addView(linearLayout2);

           s.addView(linearLayout);

           setContentView(s);





   }






   /**voltar para a tela de listagem das amostras**/

   /*private void telaListaAmostra() {
       Intent it = new Intent(this,
CadastroUsuarioController.class);
       startActivity(it);

   }*/


}


[/code]

Alguém pode me dar uma força?

Att




--
                                              - Marcelo Henrique -
  "Se não puder se destacar pelo talento, vença pelo esforço." (Dave Weinbaum)

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário