Tecnologia do Blogger.
RSS

[androidbrasil-dev] Como popular uma spinner?

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

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

0 comentários:

Postar um comentário