android - example - Spinner con ArrayAdapter personalizado para objetos que no muestran el elemento seleccionado
spinner android eclipse (1)
Descubrí cuál era el problema. Como estaba buscando los datos para el spinner desde Internet, necesitaba activar un notifyDataSetChanged (), aunque sin esto el contenido del spinner se actualizaba. Parece que la vista del elemento seleccionado no recibió el aviso.
Tengo un ArrayAdapter personalizado para representar objetos en un control giratorio, puedo cargar mi lista de elementos y mostrarla para su selección, pero cuando ocurre la selección real, el girador no muestra nada.
Código de actividad:
public MetroData metroData;
private Spinner spinner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
metroData = new MetroData();
spinner = (Spinner) findViewById(R.id.spinner1);
StopArrayAdapter dAdapter = new StopArrayAdapter(this, metroData.Stops);
spinner.setAdapter(dAdapter);
}
StopArrayAdapter:
public class StopArrayAdapter extends ArrayAdapter<MetroStop> {
private List<MetroStop> items;
private Activity activity;
public StopArrayAdapter(Activity activity, List<MetroStop> items) {
super(activity, android.R.layout.simple_list_item_1, items);
this.items = items;
this.activity = activity;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView v = (TextView) super.getView(position, convertView, parent);
if (v == null) {
v = new TextView(activity);
}
v.setTextColor(Color.BLACK);
v.setText(items.get(position).getName());
return v;
}
@Override
public MetroStop getItem(int position) {
return items.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater inflater = activity.getLayoutInflater();
v = inflater.inflate(R.layout.view_spinner_item, null);
}
TextView lbl = (TextView) v.findViewById(R.id.text1);
lbl.setTextColor(Color.BLACK);
lbl.setText(items.get(position).getName());
return convertView;
}
}
Plantilla de elemento de vista de Spinner:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="#222"/>
¿Alguna idea sobre por qué la vista del elemento seleccionado no funciona? Por cierto, también lo he intentado con un ArrayAdapter normal con el mismo resultado.
Actualización Parece que la vista se genera, pero mirando en el visor de jerarquía, la vista no se está procesando, Measured / Layout / Draw = n / a.