Tecnologia do Blogger.
RSS

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

Boa tarde Fabiano, não analisei seu código, mas recentemente eu
precisei preencher uma spinner com os valores vindos do banco de
dados...

//Meu Spinner que quero preencher
Spinner company = (Spinner) findViewById(R.sms.company)

//Meu adapter para preenchimento
EmpresasSpinnerAdapter adapter = new EmpresasSpinnerAdapter(this,
android.R.layout.simple_spinner_item, new EmpresaDAO(this).listAll());
company.setAdapter(adapter);

-- Onde o código "new EmpresaDAO(this).listAll()" retorna uma lista de
EmpresaVO

//A classe EmpresasSpinner adapter é uma implementação de
ArrayAdapter, segue o código.

public class EmpresasSpinnerAdapter extends ArrayAdapter<EmpresaVO>{
private Context context;
private List<EmpresaVO> empresaVOs;

public EmpresasSpinnerAdapter(Context context, int
textViewResourceId,
List<EmpresaVO> empresaVOs) {
super(context, textViewResourceId, empresaVOs);
this.context = context;
this.empresaVOs = empresaVOs;
}

@Override
public int getCount() {
return empresaVOs.size();
}

@Override
public EmpresaVO getItem(int position) {
return empresaVOs.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup
parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView =
inflater.inflate(android.R.layout.simple_spinner_item, parent, false);
}

TextView textView = (TextView)
convertView.findViewById(android.R.id.text1);
textView.setText(empresaVOs.get(position).getNome());
textView.setTag(empresaVOs.get(position).getId());

return convertView;
}

@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView =
inflater.inflate(android.R.layout.simple_spinner_dropdown_item,
parent, false);
}

TextView textView = (TextView)
convertView.findViewById(android.R.id.text1);
textView.setText(empresaVOs.get(position).getNome());

return convertView;
}
}


Espero que ajude...

Abraços!


On 3 jan, 12:46, Fabiano - Carioca <fabianobalme...@gmail.com> wrote:
> 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();...
>
> mais »

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

0 comentários:

Postar um comentário