Dopo aver impostato l'adattatore. Chiamare setSelection (io ho usato con 0) e subito dopo insieme il colore del testo trasparente.
// Preselect the first to make the spinner text transparent
spinner.setSelection(0, false);
TextView selectedView = (TextView) spinner.getSelectedView();
if (selectedView != null) {
selectedView.setTextColor(getResources().getColor(R.color.transparent));
}
Quindi, impostare l'OnItemSelectedListener (se necessario).
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Questo renderà il filatore vuoto a prima volta visto. Ma, se l'utente seleziona il primo elemento, non farà nulla perché 0 è pre selezionato. Per risolvere questo ho usato questa sottoclasse di spinner. tratto da @ di answer melquiades:
/**
* Spinner extension that calls onItemSelected even when the selection is the same as its previous value
*/
public class FVRSpinner extends Spinner {
public FVRSpinner(Context context) {
super(context);
}
public FVRSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FVRSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setSelection(int position, boolean animate) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position, animate);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
if (getOnItemSelectedListener() != null) {
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
}
@Override
public void setSelection(int position) {
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
if (getOnItemSelectedListener() != null) {
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
}
}
Un ArrayAdapter hanno un metodo di 'aggiungere', ma il SimpleCursorAdapter leggere documenti in esso. Potresti spiegare come aggiungere un valore nullo con il codice, senza usare CursorWrapper ?. Grazie –
AAP
Ci scusiamo per il ritardo, potrebbe essere [questo] (http://stackoverflow.com/questions/8508678/how-to-add-an-item-to-simplecursoradapter) aiuterà in qualche modo. – IronBlossom