Uso de SimpleAdapter con Spinner

Soy nuevo en el desarrollo de Android. Estoy intentando poblar un hilandero usando el SimpleAdapter. Pero la lista de spinner está mostrando el elemento en blanco. Cuando hago clic en cualquier elemento, su texto se muestra correctamente en Toast. Por favor, dígame cuál es el problema en mi código a continuación.

public void onCreate(Bundle savedInstanceState) { private List<Map<String, String>> data = new ArrayList<Map<String, String>>(); String[] from = new String[] { "colorsData" }; int[] to = new int[] { R.id.spinner }; String[] colors = getResources().getStringArray(R.array.colorsData); for (int i = 0; i < colors.length; i++) { data.add(addData(colors[i])); } Spinner spinner = (Spinner) findViewById(R.id.spinner); SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, android.R.layout.simple_spinner_item, from, to); simpleAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(simpleAdapter); spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Toast.makeText( parent.getContext(), "Selected Color:- " + parent.getItemAtPosition(position), Toast.LENGTH_LONG).show(); } }); } private Map<String, String> addData(String colorName) { Map<String, String> mapList = new HashMap<String, String>(); mapList.put("colorsData", colorName); return mapList; } 

Estoy casi 95% seguro de que su matriz debe ser declarado como:

  int[] to = new int[] { android.R.id.text1 }; 

Dar que un intento.


EDIT (basado en los comentarios siguientes):

Parece que había un error en las versiones anteriores de AndroidOS que causó que IllegalStateException. (No vi la excepción en 2.2, pero lo vi en 1.5 en el emulador). El error se puede solucionar agregando un ViewBinder al SimpleAdapter. ViewBinder no es difícil de implementar; He aquí un ejemplo:

  SimpleAdapter.ViewBinder viewBinder = new SimpleAdapter.ViewBinder() { public boolean setViewValue(View view, Object data, String textRepresentation) { // We configured the SimpleAdapter to create TextViews (see // the 'to' array), so this cast should be safe: TextView textView = (TextView) view; textView.setText(textRepresentation); return true; } }; simpleAdapter.setViewBinder(viewBinder); 

Yo blogué sobre esto aquí .

  • Actualizar City Spinner con notifyDataSetChanged después de seleccionar estado
  • El diálogo emergente de Spinner no ajusta su ancho en la rotación de la pantalla
  • Android - Cómo mostrar un spinner con valor pero mostrar otro diferente
  • Cómo configurar el texto del hilandero actual sin cambiar los elementos de la lista de selección asociada
  • Android Spinner utilizando ArrayList <String>
  • Ajuste del valor de la hiladora dinámicamente
  • Android Spinner cambia dinámicamente artículos
  • ¿Cómo hago para que el estado "deshabilitado" de un Spinner esté deshabilitado?
  • ¿Por qué mi hilandero personalizado está llenando el nombre de mi paquete?
  • Personalización de la fuente de spinner
  • Creación de un setError () para el Spinner
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.