2012-05-21 12 views
5

Tengo un ArrayAdapter personalizado para representar objetos en un control giratorio, puedo cargar mis elementos y mostrarlo para su selección, pero cuando ocurre la selección real, el girador no muestra nada.Spinner con ArrayAdapter personalizado para objetos que no muestran el elemento seleccionado

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; 
} 
} 

Spinner plantilla de vista material:

<?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 de 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 la jerarquía, la vista no se está rendido, medido/diseño/Draw = n/a.

+0

Verificar el color del texto – Krish

+0

No, el textColor no tiene ningún efecto para la vista del elemento seleccionado, lo he intentado con o sin. – Andres

Respuesta

4

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.

Cuestiones relacionadas