non ho ancora trovato una soluzione semplice e pulita, solo questa soluzione utilizzando adattatori personalizzati e una classe di elemento personalizzato:
In primo luogo, abbiamo bisogno di una classe per il contenuto oggetto filatore:
class SpinnerItem {
private final String text;
private final boolean isHint;
public SpinnerItem(String strItem, boolean flag) {
this.isHint = flag;
this.text = strItem;
}
public String getItemString() {
return text;
}
public boolean isHint() {
return isHint;
}
}
Allora la nostra classe di adattatori:
class MySpinnerAdapter extends ArrayAdapter<SpinnerItem> {
public MySpinnerAdapter(Context context, int resource, List<SpinnerItem> objects) {
super(context, resource, objects);
}
@Override
public int getCount() {
return super.getCount() - 1; // This makes the trick: do not show last item
}
@Override
public SpinnerItem getItem(int position) {
return super.getItem(position);
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
}
Infine abbiamo utilizzare la soluzione in questo modo:
ArrayList<SpinnerItem> items = new ArrayList<SpinnerItem>();
items.add(new SpinnerItem("Item 1", false));
items.add(new SpinnerItem("Item 2", false));
items.add(new SpinnerItem("HINT", true)); // Last item
MySpinnerAdapter adapter = new MySpinnerAdapter(this, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setSelection(items.size() - 1);
Quindi è possibile utilizzare il flag della classe SpinnerItem per impostare il colore del testo per quell'elemento o altro.
se ** android: prompt = "@ String/select" ** funzionerà o no.? –
Purtroppo no: il prompt è per il menu a discesa che appare dopo aver registrato il widget 'Spinner'. Inoltre, non funziona se si utilizzano gli Holo-Themes che sono nuovi in Android 4.x. –
L'adattatore spinner ha diversi metodi, uno per la visualizzazione a discesa e uno per la visualizzazione elenco con tutte le opzioni. Quindi, quando non viene selezionato nulla, l'adattatore restituisce questo TextView per impostazione predefinita, altrimenti l'elemento selezionato. –