Fórum Pegar id de um item no spinner #447037

28/06/2013

0

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***

Responder

Posts

28/06/2013

Frederico Brigatte***

Alguém ajuda?
Responder

Gostei + 0

28/06/2013

Frederico Brigatte***

Ninguém?
Responder

Gostei + 0

28/06/2013

Frederico Brigatte***

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.
Responder

Gostei + 0

28/06/2013

Pablo Pinheiro

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.
Responder

Gostei + 0

28/06/2013

Pablo Pinheiro

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.
Responder

Gostei + 0

28/06/2013

Frederico Brigatte***

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?
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***

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

		}
	});

}

}
Responder

Gostei + 0

29/06/2013

Pablo Pinheiro

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

}

});

}
}
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***

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.
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***

Porque quando seleciono o primeiro da id = 0?
Responder

Gostei + 0

29/06/2013

Pablo Pinheiro

Está correto.. o spinner assim como em array inicia o índice em 0
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***

Mas e qdo for do banco, o id vai ser diferente?
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***

Pablo, vc tem algum exemplo simples com spinner e sqlite?
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***

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.
Responder

Gostei + 0

29/06/2013

Frederico Brigatte***


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
				
			}
		});

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar