Reputation: 163
I have small problem.
I'm using Spinner in android. For example spinner contain 4 string items: Item1, Item2, Item3, Item4. Spinner is set by for example Item3. Now i wanna to programmatically change selected item to Item2 and change font color to red. So i did:
_spinner.setSelection(1);
View view = _spinner.getSelectedView();
if(view instanceof TextView)
{
// change color
}
But it didn't work. It's because when i get selectedView, Item3 is still selected so i change color on Item3 view. How to fix it?
Upvotes: 1
Views: 524
Reputation: 139
Try setting adapter like this :
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, list) {
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
TextView tv = (TextView) view;
if (position == 0)
tv.setTextColor(ContextCompat.getColor(Activity.this, android.R.color.darker_gray));
else
tv.setTextColor(ContextCompat.getColor(Activity.this, android.R.color.black));
return view;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter );
spinner.setSelection(Adapter.getPosition(Item2));
This way you can easily set different color for Item1,Item2 or Item3 and item2 will be dynamically set on spinner.
Upvotes: 1
Reputation: 69689
Try this
spinner= findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) adapterView.getChildAt(0)).setTextColor(getResources().getColor(R.color.black));
((TextView) adapterView.getChildAt(0)).setTextSize(19); }
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
Upvotes: 2