por exemplo, eu alimento o spinner com o valor “30 - PRODUTO1 - R$5,99”…
daí eu quando quero pegar o primeiro valor ali, eu pego a string inteira que tá selecionada no spinner (SpinContrato.getSelectedItem().toString()), daí faço uma função pra ler caractere por caractere até que encontre o espaço, e retorno o que foi lido…
ex:
public String RetornaNum(String str){
Integer i = 0;
String str2 = “”;
String buff = “”;
essa função aí pega o primeiro campo até o primeiro espaço, e retorna a variavel buff que alimentei até antes de encontrar o espaço… entendeu?
F
fbrigatt
Entendi sim. Não teria um meio mais prático? Preencher somente pelo nome e pegar o id?
saryoromulo,
no seu exemplo, como que preenche o spinner e como é a chamada do método?
F
fbrigatt
Eu fiz assim, mas está retornando 0 (zero) no primeiro item, onde está errado?
packagebr.com.spinner;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.ArrayAdapter;importandroid.widget.Spinner;importandroid.widget.Toast;importjava.util.List;importjava.util.ArrayList;publicclassSpinnerIdActivityextendsActivity{privateSpinnerspn1;privateList<String>nomes=newArrayList<String>();privateStringnome;privateString[]id;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//Adicionando Nomes no ArrayListnomes.add("João");nomes.add("Maria");nomes.add("José");nomes.add("Paulo");nomes.add("Adriana");//Identifica o Spinner no layoutspn1=(Spinner)findViewById(R.id.spinner1);//Cria um ArrayAdapter usando um padrão de layout da classe R do android, passando o ArrayList nomesArrayAdapter<String>arrayAdapter=newArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,nomes);ArrayAdapter<String>spinnerArrayAdapter=arrayAdapter;spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);spn1.setAdapter(spinnerArrayAdapter);//Método do Spinner para capturar o item selecionadospn1.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>parent,Viewv,intposicao,longid){//pega nome pela posiçãonome=parent.getItemAtPosition(posicao).toString();//imprime um Toast na tela com o nome que foi selecionadoToast.makeText(SpinnerIdActivity.this,"Nome Selecionado: "+nome,Toast.LENGTH_LONG).show();Toast.makeText(SpinnerIdActivity.this,"id selecionado :"+posicao,Toast.LENGTH_SHORT).show();}@OverridepublicvoidonNothingSelected(AdapterView<?>parent){}});}}
F
fbrigatt
Suponha que tenha a tabela abaixo com os campos id e nome. Quero preencher um spinner com o campo nome e ao selecionar um nome, mostrar o id correspondente num textView.
id = 1
nome = a
id = 2
nome = b
id = 3
nome = c
Exemplo:
Selecionei o nome b no spinner e me mostrar o id = 2.
Alguém poderia ajudar?
F
fbrigatt
Ninguém???
F
fbrigatt
Meus amigos, fiz do jeito abaixo mas não está mostrando no Toast o id ao selecionar o item no spinner. O que está errado?
Spinnerspn=(Spinner)findViewById(R.id.spinner1);StringnomeString=Procurar.getText().toString();Cursorcursor;db.open();cursor=db.getClientePorNome(nomeString);cursor.moveToFirst();SimpleCursorAdapteradaptador=newSimpleCursorAdapter(this,R.layout.mostrabanco2,cursor,newString[]{DbAdapter.KEY_NOME},newint[]{R.id.lblCampo1});spn.setAdapter(adaptador);spn.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>parent,Viewv,intposicao,longids){Toast.makeText(Lista.this,"ID Selecionado: "+posicao,Toast.LENGTH_LONG).show();}@OverridepublicvoidonNothingSelected(AdapterView<?>arg0){// TODO Auto-generated method stub}});db.close();
F
fbrigatt
Boa tarde a todos, preciso preencher um spinner com dados vindo do sqlite e mostrar o id do selecionado num editText ou txtView, alguém poderia me ajudar? Até consegui fazer mas não mostra no Toast quando clica no spinner, o que está errado?
Spinnerspn=(Spinner)findViewById(R.id.spinner1);StringnomeString=Procurar.getText().toString();Cursorcursor;db.open();cursor=db.getClientePorNome(nomeString);cursor.moveToFirst();SimpleCursorAdapteradaptador=newSimpleCursorAdapter(this,android.R.layout.simple_spinner_item,cursor,newString[]{DbAdapter.KEY_NOME},newint[]{android.R.id.text1});adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spn.setAdapter(adaptador);spn.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){@OverridepublicvoidonItemSelected(AdapterView<?>parent,Viewv,intposicao,longids){Toast.makeText(Lista.this,"ID Selecionado: "+posicao,Toast.LENGTH_LONG).show();}@OverridepublicvoidonNothingSelected(AdapterView<?>arg0){// TODO Auto-generated method stub}});db.close();
F
fbrigatt
Quero que o id seja o que está no banco de dados, não do spinner.
F
fbrigatt
Alguém para me ajudar?
F
fbrigatt
Me deram essa dica, mas não entendi direito o que fazer:
Você passou o Cursor diretamente para o Spinner, eu sugiro que você crie um Objeto modelo, faça um método separado para executar a consulta ao Banco e inserir em uma Lista de objetos, tipo o exemplo abaixo:
List<Time> times = new ArrayList<Time>();
if (c.moveToFirst()) {
int idxId = c.getColumnIndex(Times._ID);
int idxNome = c.getColumnIndex(Times.NOME);
do {
Time time = new Time();
time.setId(c.getLong(idxId));
time.setNome(c.getString(idxNome));
times.add(time);
} while (c.moveToNext());
}
return times;
Onde ?c.moveToFirst()? o ?C? é o objeto Cursor, então fazemos um do-while para inserir os dados em uma lista, com essa Lista você pode passar ele pelo Spinner e depois recuperar esses dados sem precisar fazer uma nova consulta ao Banco!
Essa dica ai, mas o que eu faço? Me ajudem, por favor.
L
ladajr
Não seria melhor criar um Adapter ?
Tem um exemplo aqui, mas da pra adapta-lo a sua necessidade.