Saludos a todos. Tengo un pequeño problema ... Bueno, déjenme decir primero lo que estoy tratando de lograr. Tuve un spinner que extrae cadenas de una matriz almacenada. Como tal, usted no necesita leerlo sin embargo:Problema del adaptador simple, texto + imagen en spinner. Java, Android
ArrayAdapter healthadapter = ArrayAdapter.createFromResource( this, R.array.health, android.R.layout.simple_spinner_item); mHealthSpin = (Spinner) findViewById(R.id.health_spin); healthadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mHealthSpin.setAdapter(healthadapter);
simple y casi suficiente. Me gustaría agregar una imagen al girador ... el botón de radio no es necesario. Así que la ruleta debería aparecer y tener una lista:
TEXT *IMAGE* TEXT2 *IMAGE* TEXT3 *IMAGE*
Hasta ahora tengo un Adaptador Simple personalizado. ¡Aquí está el problema!: aparece el texto pero no la imagen. Aquí está el código:
public class stageadapter extends SimpleAdapter { private Context localContext; private ArrayList> localList; public stageadapter(Context context, ArrayList> list, int resource, String[] from, int[] to) { super(context, list, resource, from, to); localContext = context; localList = list; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (null == convertView) { LayoutInflater inflater = (LayoutInflater) localContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.stagerow, null); } TextView name = (TextView) convertView.findViewById(R.id.stage_name); name.setText((String)localList.get(position).get("Name")); ImageView icon = (ImageView) convertView.findViewById(R.id.stage_icon); icon.setImageResource(R.drawable.icon); return convertView; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { if (null == convertView) { LayoutInflater inflater = (LayoutInflater) localContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.stagerow, null); } TextView name = (TextView) convertView.findViewById(R.id.stage_name); name.setText((String)localList.get(position).get("Name")); ImageView icon = (ImageView) convertView.findViewById(R.id.stage_icon); icon.setImageResource(R.drawable.icon); return convertView; } }
Planeo usar una declaración de interruptor para establecer diferentes imágenes para cada nombre. Sin embargo, me detuve aquí hasta que pueda obtener cualquier imagen para mostrar.
cómo estoy llamando
ArrayList> list = new ArrayList>(); HashMap map = new HashMap(); map.put("Name", "One"); map.put("Icon", R.drawable.icon); list.add(map); map = new HashMap(); map.put("Name", "Two"); map.put("Icon", R.drawable.icon); list.add(map); mStageSpin = (Spinner) findViewById(R.id.stage_spin); stageadapter adapter = new stageadapter(getApplicationContext(), list, R.layout.stagerow, new String[] { "Name", "Icon"}, new int[] { R.id.stage_name, R.id.stage_icon }); mStageSpin.setAdapter(adapter);
La respuesta para mí es en los comentarios
eliminé setDropDownViewResource. Sin imágen.Modifiqué tu código para trabajar con el mío. Sin imágen. Agregué Overide getDropDownView. Sin imagen :(No estoy seguro de qué está mal porque el texto funciona. – Brian
Comprueba la definición xml del diseño de tu fila. Error común: en LinearLayout horizontal, debes usar wrap_content para TextView y ImageView (no fill_parent) –
Eso fue Mi TextView se estableció como fill_parent Gracias – Brian