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; }
- Android: configura Spinner para usar array
- Cómo rellenar un Spinner con una lista de clases Java en línea
- Org.json.JSONArray no se puede convertir en JSONObject (Populating spinner from webservice)
- Alinee los valores del hilador a la derecha en lugar de a la izquierda
- Personalización del spinner de Actionbar
- Spinner eliminar elementos
- Tamaño del texto del hilandero Android
- ¿Cómo recuperar un ID del elemento seleccionado en un Spinner dinámico?
- Cómo mover la flecha giratoria de Android Spinner más cerca de la que está emitiendo texto
- Modificar el tamaño de un Android Spinner Drop down tamaño de la parte?
- spinner dropdown inicio de la parte superior de la ruleta
- Establecer foco en el hilador cuando se selecciona en android
- Implementación de eventos Spinner with Butter Knife
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í .