tapas studio rapido programacion para hacer fisher facil edición desarrollo cómo con como aplicaciones android spinner

android - studio - ¿Cómo es posible crear un spinner con imágenes en lugar de texto?



manual de programacion android pdf (2)

Sí, mira el siguiente código:

array of data // stores the image database icons private static Integer[] imageIconDatabase = { R.drawable.ball, R.drawable.catmouse, R.drawable.cube, R.drawable.fresh, R.drawable.guitar, R.drawable.orange, R.drawable.teapot }; // stores the image database names private String[] imageNameDatabase = { "ball", "catmouse", "cube", "fresh", "guitar", "orange", "teapot" };

Creando lista de hashmaps

private void initializeImageList() { // TODO Auto-generated method stub for (int i = 0; i < imageNameDatabase.length; i++) { map = new HashMap<String, Object>(); map.put("Name", imageNameDatabase[i]); map.put("Icon", imageIconDatabase[i]); spinnerList.add(map); } ImageView imageView = new ImageView(this); imageView.setBackgroundResource((spinnerList.get(0).get("Icon")); spinnerList.get(0).get("Name"); }

Asignación de spinner a adaptador.

public void createAddDialog() { // TODO requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.list_editoradd_dialog); Spinner spin = (Spinner) findViewById(R.id.spinnerAddImageList); CustomSpinnerAdapter adapter = new CustomSpinnerAdapter(this, spinnerData, R.layout.spinner_view, new String[] { "Name", "Icon" }, new int[] { R.id.imageNameSpinner, R.id.imageIconSpinner }); spin.setAdapter(adapter); }

El adaptador usado arriba es como se indica a continuación.

package com.tcs.CustomListViewGeneration; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.SimpleAdapter; import android.widget.TextView; class CustomSpinnerAdapter extends SimpleAdapter { LayoutInflater mInflater; private List<? extends Map<String, ?>> dataRecieved; public CustomSpinnerAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); dataRecieved =data; mInflater=LayoutInflater.from(context); } @SuppressWarnings("unchecked") public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.spinner_view, null); } // HashMap<String, Object> data = (HashMap<String, Object>) getItem(position); ((TextView) convertView.findViewById(R.id.imageNameSpinner)) .setText((String) dataRecieved.get(position).get("Name")); ((ImageView) convertView.findViewById(R.id.imageIconSpinner)) .setBackgroundResource(dataRecieved.get(position).get("Icon"))); return convertView; } }

Dado el siguiente código, ¿es posible tener imágenes en lugar de texto en los planetas de la matriz?

Spinner s = (Spinner) findViewById(R.id.spinner); ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.planets, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s.setAdapter(adapter);

y

<string name="planet_prompt">Choose a planet</string> <string-array name="planets"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array>


Solo necesitaba una solución súper fácil para un conjunto fijo de imágenes en una rueda giratoria, así que hice esto:

public class SimpleImageArrayAdapter extends ArrayAdapter<Integer> { private Integer[] images; public SimpleImageArrayAdapter(Context context, Integer[] images) { super(context, android.R.layout.simple_spinner_item, images); this.images = images; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getImageForPosition(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { return getImageForPosition(position); } private View getImageForPosition(int position) { ImageView imageView = new ImageView(getContext()); imageView.setBackgroundResource(images[position]); imageView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return imageView; }

}

Y luego en el código puedes usarlo así:

SimpleImageArrayAdapter adapter = new SimpleImageArrayAdapter(context, new Integer[]{R.drawable.smiley1, R.drawable.smiley2, R.drawable.smiley3, R.drawable.smiley4, R.drawable.smiley5}); spinner.setAdapter(adapter);