2012-05-21 17 views
5

Mam niestandardowy ArrayAdapter do reprezentowania obiektów na pokrętle sterowania, mogę załadować moje pozycje listy i pokazać ją do wyboru, ale gdy rzeczywisty wybór się dzieje, spinner nic nie pokazuje.Spinner z niestandardowym ArrayAdapter dla obiektów nie wyświetlających wybranego elementu

kod aktywny:

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 widok poz szablon:

<?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"/> 

Wszelkie pomysły, dlaczego wybrany widok pozycja nie działa? Przy okazji wypróbowałem go również z normalnym ArrayAdapter z tym samym wynikiem.

Aktualizacja Wydaje się, że widok jest generowany, ale patrząc na przeglądarkę hierarchii, widok nie jest renderowany, Pomiar/Układ/Rysunek = n/a.

+0

Sprawdź, czy nie ma tekstuColor – Krish

+0

Nie, kolor textColor nie ma żadnego wpływu na widok wybranego elementu, próbowałem zarówno z, jak i bez. – Andres

Odpowiedz

4

Dowiedziałem się o co chodzi. Ponieważ pobierałem dane dla spinnera z Internetu, musiałem wywołać funkcję notifyDataSetChanged(), mimo że bez niej zawartość spinnera została zaktualizowana. Wygląda na to, że widok wybranego elementu nie został wyświetlony.

Powiązane problemy