Android: Cómo obtener el ID del elemento seleccionado de Spinner

En mi caso quiero obtener el ID del elemento seleccionado de Spinner. Tengo dos campos en mi clase modal que son id y nombre. I'am que enumeran todos los datos y estoy fijando a esta lista al adaptador. He intentado conseguir la identificación selectedItem usando el método getSelectedItem (). Pero sólo puedo obtener el primer identificador de la lista de elementos.

Este es mi código.

public class ModifyEventFragment extends DialogFragment{ Context context; CalEvent eve; Project proj; Spinner eventType,stage; public static String eid,pid,type; public static List<EventType> event_type; public static List<ProjectStatus> cust_stage; EditText where,when,who,notes; String eve_type,stage_val,when_val,who_val,notes_val; String modified_where,modified_who,modified_when,modified_notes; public ModifyEventFragment(Project proj) { this.proj=proj; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.modify_project_event, container, false); context = rootView.getContext(); eventType = (Spinner) rootView.findViewById(R.id.modifyEventType); stage =(Spinner) rootView.findViewById(R.id.modifyStage); where = (EditText)rootView.findViewById(R.id.modifyWhere); who = (EditText)rootView.findViewById(R.id.modifyWho); when = (EditText)rootView.findViewById(R.id.modifyWhen); notes =(EditText) rootView.findViewById(R.id.modifyNotes); eve = CalEvent.getCalEvent(ProjectEventFragment.calevent.eve_id); event_type = EventType.listAll(); CustomEventTypeAdapter adapter = new CustomEventTypeAdapter(context, event_type); eventType.setAdapter(adapter); type=((EventType)eventType.getSelectedItem()).et_id; cust_stage = ProjectStatus.listAll(); CustomStatusAdapter adapter1 = new CustomStatusAdapter(context, cust_stage); stage.setAdapter(adapter1); where.setText(eve.followup_location.toString()); where.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub modified_where = s.toString(); } }); who.setText(eve.person_met.toString()); who.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub modified_who = s.toString(); } }); when.setText(eve.event_start.toString()); when.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub modified_when = s.toString(); } }); notes.setText(eve.notes.toString()); notes.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub modified_notes = s.toString(); } }); Button save = (Button) rootView.findViewById(R.id.modifyeventsave); save.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub eve.followup_location = modified_where; eve.event_start = modified_when; eve.person_met = modified_who; eve.notes = modified_notes; System.out.println("print type"+type); eve.save(); ProjectEventFragment.adapter.notifyDataSetChanged(); } }); return rootView; } 

Este es el código del adaptador CustomEventType.

 public class CustomEventTypeAdapter extends BaseAdapter{ Context ctx; List<EventType> ps; LayoutInflater inflater; public CustomEventTypeAdapter(Context ctx,List<EventType> ps) { this.ctx=ctx; this.ps=ps; inflater = (LayoutInflater) ctx .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { // TODO Auto-generated method stub return ps.size(); } @Override public EventType getItem(int position) { // TODO Auto-generated method stub return ps.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return ps.get(position).getId(); } @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (convertView == null) rowView = inflater.inflate(R.layout.spinner_item_local, parent, false); TextView textView = (TextView) rowView.findViewById(R.id.spinner_item_text); EventType proj = getItem(position); try { textView.setText(proj.name); } catch (Exception e) { } return rowView; } 

¿Puede alguien ayudarme a resolver este problema?

Obtener los datos del elemento seleccionado del titular de la lista del adaptador usando la posición:

 eventType.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String id = event_type.get(position).getId(); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); 

Compartir el código de ejemplo de mi clase para obtener el ID del elemento seleccionado –

 spinner1 .setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub spinner1 = parent.getItemAtPosition(position).toString(); count = position; //this would give you the id of the selected item } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); 

Saludos

Use view.OnItemSelectedListener en su spinner, obtendrá una posición en int que puede usar como en id para el elemento seleccionado

  • Spinner dropdown dibujo de la parte superior de la pantalla en listview después de seleccionar el elemento
  • Android - Set Spinner Punto de inicio
  • Android Spinner Artículo seleccionado
  • ¿Cómo puedo cambiar el color de la fuente de la lista de selección en una ruleta?
  • ¿Cómo puedo cambiar o disminuir el tamaño de la ruleta de Android?
  • Cómo alinear el texto en Spinner para android?
  • Android Spinner.setSelection () no funciona
  • La flecha giratoria desaparece cuando cambio el color de fondo
  • Spinner no envuelve texto - ¿esto es un error de Android?
  • ¿Cómo hacer una lista emergente como un hilandero sin el hilador en androide?
  • Cómo hacer en el artículo seleccionado no elegir automáticamente la primera entrada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.