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 = “”;
Eu fiz assim, mas está retornando 0 (zero) no primeiro item, onde está errado?
package br.com.spinner;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.List;
import java.util.ArrayList;
public class SpinnerIdActivity extends Activity {
private Spinner spn1;
private List<String> nomes = new ArrayList<String>();
private String nome;
private String[] id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Adicionando Nomes no ArrayList
nomes.add("João");
nomes.add("Maria");
nomes.add("José");
nomes.add("Paulo");
nomes.add("Adriana");
//Identifica o Spinner no layout
spn1 = (Spinner) findViewById(R.id.spinner1);
//Cria um ArrayAdapter usando um padrão de layout da classe R do android, passando o ArrayList nomes
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<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 selecionado
spn1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int posicao, long id) {
//pega nome pela posição
nome = parent.getItemAtPosition(posicao).toString();
//imprime um Toast na tela com o nome que foi selecionado
Toast.makeText(SpinnerIdActivity.this, "Nome Selecionado: " + nome, Toast.LENGTH_LONG).show();
Toast.makeText(SpinnerIdActivity.this, "id selecionado :" + posicao, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
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.
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?
Spinner spn = (Spinner) findViewById(R.id.spinner1);
String nomeString = Procurar.getText().toString();
Cursor cursor;
db.open();
cursor = db.getClientePorNome(nomeString);
cursor.moveToFirst();
SimpleCursorAdapter adaptador = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor,
new String[] { DbAdapter.KEY_NOME },
new int[] { android.R.id.text1 });
adaptador.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
spn.setAdapter(adaptador);
spn.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int posicao, long ids) {
Toast.makeText(Lista.this, "ID Selecionado: " + posicao, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
db.close();
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.