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 »
0 comentários:
Postar um comentário