Adaptador de spinner personalizado simple_spinner_dropdown_item no se muestra correctamente
Estoy recibiendo datos de una base de datos SQLite y asignándolos a objetos de datos. Estoy utilizando un adaptador de spinner personalizado (implementa SpinnerAdapter
) para ponerlos en hilanderos para anular los getItem()
y getItemId()
. Sin embargo, el android.R.layout.simple_spinner_dropdown_item
no se muestra correctamente (capturas de pantalla de mi Galaxy Tab 2 10.1):
- Dos spinner en una actividad
- ¿Cómo prevenir los incendios onNavigationItemSelected cuando se inicia la actividad?
- El NetworkImageView de Volley no aparece en Spinner
- ¿Cómo crear un spinner con título en él?
- Vista de datos de Android Spinner que no se actualiza en el elemento re-seleccionado
Por el contrario esto es un spinner que se puebla de un arsenal en R.array
(la mirada / el tamaño correctos):
Hecho por este código:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.quote_prices, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
No puedo obtener este aspecto implementando / extendiendo algún tipo de adaptador (también he intentado extender BaseAdapter
sin éxito). Este es el código para mi adaptador giratorio en su estado actual:
public class MySpinnerAdapter implements SpinnerAdapter { private Context context; /** * The internal data (the ArrayList with the Objects). */ private List<? extends BaseDO> data; public MySpinnerAdapter(Context context, List<?extends BaseDO> data){ this.context = context; this.data = data; } /** * Returns the Size of the ArrayList */ @Override public int getCount() { return data.size(); } @Override public Object getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return data.get(position).getId(); } @Override public int getItemViewType(int position) { return 0; } @Override public int getViewTypeCount() { return 1; } @Override public boolean hasStableIds() { return false; } @Override public boolean isEmpty() { return false; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(android.R.layout.simple_spinner_dropdown_item, null); } ((TextView) convertView).setText(data.get(position).toString()); return convertView; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) View.inflate(context, android.R.layout.simple_spinner_item, null); textView.setText(data.get(position).toString()); return textView; } @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } public List<? extends BaseDO> getData() { return data; } }
Cualquier ayuda sería apreciada.
EDIT: Olvidé mencionar que esto se llama usando
spnnrTerm.setAdapter(new MySpinnerAdapter(getActivity(), termList));
- No se puede marcar / desmarcar CheckedTextView dentro de getView
- Spinner causa error al usar estilo personalizado
- Android - ProgressBar setVisibility to GONE no funciona
- Android: Cómo personalizar los títulos de AlertDialog, Dialog y Spinner
- Android: No se puede diseñar el divisor de hilado
- spinner con selección vacía
- Android Spinner's onItemSelected ejecutado dos veces cuando se vuelve a Fragmento
- Añadir Spinner a la barra de menús de acción
Sé que esta pregunta es vieja pero he estado teniendo el mismo problema y acabo de figurar hacia fuera el problema. Después de examinar la fuente de ArrayAdapter.java me di cuenta de que estaba pasando el ViewGroup a la inflater y yo no era. Este fue el problema todo el tiempo.
@Override public View getDropDownView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = vi.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false); } ((TextView) convertView).setText(data.get(position).toString()); return convertView; } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = (TextView) View.inflate(context, android.R.layout.simple_spinner_item, null); textView.setText(data.get(position).toString()); return textView; }
- ¿Cómo eliminar un tema de Firebase Console? (FCM)
- Android Actividad onDestroy () no siempre se llama y si se llama sólo parte del código se ejecuta