android change la couleur du texte des éléments dans Spinner

J'ai un spinner où, dans certaines conditions, certaines options ne devraient pas être sélectionnables. J'ai le code pour faire des articles non sélectionnable, mais il n'est pas gris, du texte de couleur pour indiquer que l'élément n'est pas sélectionnable. Comment puis-je changer la couleur du texte des éléments de la toupie qui doivent être désactivés? Voici le code:

public class main extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    PatchedSpinner pSpinner = (PatchedSpinner) findViewById(R.id.spinner2);
    ArrayList<String> testarray = new ArrayList<String>();
    testarray.add("item0");
    testarray.add("item1");
    testarray.add("item2");
    testarray.add("item3");

    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, 
            android.R.layout.simple_spinner_dropdown_item, testarray) { 

        @Override
        public boolean isEnabled(int position) {
            return position != 1;
        }

        public boolean areAllItemsEnabled() { 
            return false; 
        } 
    };
    pSpinner.setAdapter(spinnerAdapter);
}

Ci-dessous est la Coutume Spinner Classe utilisée pour créer un compteur qui est en mesure de désactiver certains éléments de la toupie.

public class PatchedSpinner extends Spinner {
public PatchedSpinner(Context context, AttributeSet attrs, int defStyle) { 
super(context, attrs, defStyle); 
} 
public PatchedSpinner(Context context) { 
super(context); 
} 
public PatchedSpinner(Context context, AttributeSet attrs) { 
super(context, attrs); 
}
@Override 
public boolean performClick() {
//this line removed, we do not want to delegate the click to the spinner.
//boolean handled = super.performClick(); 
Context context = getContext();
final DropDownAdapter adapter = new DropDownAdapter(getAdapter());
CharSequence mPrompt = getPrompt();
AlertDialog.Builder builder = new AlertDialog.Builder(context); 
if (mPrompt != null) { 
builder.setTitle(mPrompt); 
} 
builder.setSingleChoiceItems(adapter, getSelectedItemPosition(), this).show();
return true; 
}
private static class DropDownAdapter implements ListAdapter, SpinnerAdapter { 
private SpinnerAdapter mAdapter;
public DropDownAdapter(SpinnerAdapter adapter) { 
mAdapter = adapter; 
}
public int getCount() { 
return mAdapter == null ? 0 : mAdapter.getCount(); 
}
public Object getItem(int position) { 
return mAdapter == null ? null : mAdapter.getItem(position); 
}
public long getItemId(int position) { 
return mAdapter == null ? -1 : mAdapter.getItemId(position); 
}
public View getView(int position, View convertView, ViewGroup parent) { 
return getDropDownView(position, convertView, parent); 
}
public View getDropDownView(int position, View convertView,ViewGroup parent) { 
if (mAdapter == null) {
return null;
}
mAdapter.getDropDownView(position, convertView, parent);
}
public boolean hasStableIds() { 
return mAdapter != null && mAdapter.hasStableIds(); 
}
public void registerDataSetObserver(DataSetObserver observer){ 
if (mAdapter != null) { 
mAdapter.registerDataSetObserver(observer); 
} 
}
public void unregisterDataSetObserver(DataSetObserver observer) { 
if (mAdapter != null) { 
mAdapter.unregisterDataSetObserver(observer); 
} 
}
//PATCHED 
public boolean areAllItemsEnabled() { 
if (mAdapter instanceof BaseAdapter) { 
return ((BaseAdapter) mAdapter).areAllItemsEnabled(); 
} else { 
return true; 
} 
}
//PATCHED 
public boolean isEnabled(int position) { 
if (mAdapter instanceof BaseAdapter) { 
return ((BaseAdapter) mAdapter).isEnabled(position); 
} else { 
return true; 
} 
}
public int getItemViewType(int position) { 
return 0; 
}
public int getViewTypeCount() { 
return 1; 
}
public boolean isEmpty() { 
return getCount() == 0; 
} 
}
}

source d'informationauteur Jonathan