Pegar id de um item no spinner

Android

28/06/2013

Boa tarde,

Como posso recuperar o id de um produto no spinner?

Tenho o spinner.xml com os campos txvNome, txvPreco, txvID.

Preencho o spinner assim:

Spinner spProdutos = (Spinner) findViewById(R.id.spProdutos);
SQLiteDataBase db = openOrCreateDatabase("vendas.db", Context.MODE_PRIVATE", null);
Cursor cursor = db.rawQuery("SELECT * FROM produtos ORDER BY nome ASC",null);
String[] from = { "_id ", "nome", "preco"};
int[] to = {R.id.txvID, R.txvNome, R.id.txvPreco};
SimpleCursorAdapter ad = new SimpleCursorAdapter (getBaseContext(), R.layout.spinner, cursor, from,  to);
spProdutos.setAdapter(ad);
Frederico Brigatte***

Frederico Brigatte***

Curtidas 0

Respostas

Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Alguém ajuda?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Ninguém?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Joel, poderia me ajudar nesse topico:

https://www.devmedia.com.br/forum/pegar-id-de-um-item-no-spinner/447037

Ok,vou ver novamente esse código e tentar. Estou precisando de ajuda no tópico do spinner.
GOSTEI 0
Pablo Pinheiro

Pablo Pinheiro

28/06/2013

Olá!
Não sei se entendi muito bem mas vc pode tentar da seguinte forma

private String[] id;

seuSpinner = (Spinner)findViewById(R.id.idSpinner);
seuEditTex = (EditTex)findViewById(R.id.idEditTex);

seuSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View v, int posicao, long ids){
seuEditTex.setTex(id[posicao])


}

@Override
public void onNothingSelected(AdapterView<?> parent){

}
});

Onde id é um array com os itens que vc buscou em seu banco
Ainda estou aprendendo Android mas espero ter ajudado.
GOSTEI 0
Pablo Pinheiro

Pablo Pinheiro

28/06/2013

Se vc quiser apenas pegar a posição do item selecionado use a variável posição
Quando quero validar algo assim uso o Toast :D
Exemplo, use
Toast.makeText(this, "id selecionado :" + posicao, Toast.LENGTH_SHORT).show();
no lugar de seuEditTex.setTex(id[posicao])
e veja o número do item selecionado.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Ok, Pablo, obrigado pelo retorno. Tem como vc fazer um exemplo disso? Não precisa ser com banco não, pois o procedimento vai ser o mesmo, não vai?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

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) {

		}
	});

}

}
GOSTEI 0
Pablo Pinheiro

Pablo Pinheiro

28/06/2013

De forma bem simples
Uma tela com o spinner


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

</LinearLayout>



E nossa Classe

public class pegaID extends Activity {

private String[] alunos = new String[]{"João","Jose","Pedro","Paulo"}; // Para preencher o spinner

@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.tela_teste);
final Spinner spAlunos = (Spinner) findViewById(R.id.spinner1);


ArrayAdapter adaptador = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,alunos);
adaptador.setDropDownViewResource(android.R.layout.simple_spinner_item);
spAlunos.setAdapter(adaptador);

spAlunos.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v, int posicao, long ids){

Toast.makeText(pegaID.this, "ID Selecionado: " + posicao, Toast.LENGTH_SHORT).show();

Toast.makeText(pegaID.this, "Aluno: " + alunos[posicao], Toast.LENGTH_SHORT).show();
//Rertorna o conteudo da Srtring[] alunos na posição selecionada
}

@Override
public void onNothingSelected(AdapterView<?> parent){

}

});

}
}
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Estou montando no eclipse, assim que terminar posto o resultado, ok?

frederico.brigatte@gmail.com

Skype:
frederico.brigatte@itelefonica.com.br

me add ai, to online.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Porque quando seleciono o primeiro da id = 0?
GOSTEI 0
Pablo Pinheiro

Pablo Pinheiro

28/06/2013

Está correto.. o spinner assim como em array inicia o índice em 0
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Mas e qdo for do banco, o id vai ser diferente?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Pablo, vc tem algum exemplo simples com spinner e sqlite?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

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.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013


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, R.layout.mostrabanco, cursor, new String[] {DbAdapter.KEY_NOME}, new int[] {R.id.lblCampo1});
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
				
			}
		});

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013


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, R.layout.mostrabanco, cursor, new String[] {DbAdapter.KEY_NOME}, new int[] {R.id.lblCampo1});
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
				
			}
		});

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013


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, R.layout.mostrabanco, cursor, new String[] {DbAdapter.KEY_NOME}, new int[] {R.id.lblCampo1});
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
				
			}
		});

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Fiz assim mas não pega o id do selecionado.



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, R.layout.mostrabanco, cursor, new String[] {DbAdapter.KEY_NOME}, new int[] {R.id.lblCampo1});
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
				
			}
		});

GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

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, R.layout.mostrabanco2, cursor, new String[] {DbAdapter.KEY_NOME}, new int[] {R.id.lblCampo1});
        
        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();
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

28/06/2013

Quero que o id seja o que está no banco de dados, não do spinner. Porque está me retornando 0 no primeiro item e no banco é 1.
GOSTEI 0
Marcelo Senaga

Marcelo Senaga

28/06/2013

Como exemplo, ver:

http://www.mkyong.com/android/android-spinner-drop-down-list-example/
GOSTEI 0
Fernando

Fernando

28/06/2013

https://mega.nz/#!PZ4kkRQB
GOSTEI 0
POSTAR