2011-05-02 83 views
2

我有一个微调,我希望每个项目的文本是不同的颜色。例如在item0上的文本应该是红色的,item1的文本应该是蓝色的,而item2的文本应该是绿色的。我尝试设置我想要更改为textView并更改textview的颜色的项目,但它不起作用。关于如何完成这项任务的任何想法?android:每个项目的微调不同的颜色

   Spinner spinner = (Spinner) findViewById(R.id.spinner1); 

       ArrayList<String> array = new ArrayList<String>(); 
       array.add("item0"); 
    array.add("item1"); 
    array.add("item2"); 

       ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,R.layout.row, array); 
       spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

       spinner.setAdapter(spinnerArrayAdapter) 

       try{ 
    TextView tv = new TextView((Context) spinner.getItemAtPosition(0)); 
    tv.setTextColor(Color.argb(0, 255, 0, 0)); 
    }catch(Exception e){ 
    Toast.makeText(getApplicationContext(), "Error: " + e.toString(), Toast.LENGTH_LONG); 
     } 

回答

5

创建自己的扩展BaseAdapter并实现SpinnerAdapter的类。

重写getDropDownView,并且在处理位置时,可以从充气的自定义布局中设置文本视图的格式。

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent){ 

    View v = convertView; 

    if (v == null) { 
     LayoutInflater vi = (LayoutInflater) mContext 
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = vi.inflate(R.layout.your_custom_layout, null); 
    } 
    TextView tv=(TextView) v.findViewById(R.id.yourTextViewFromYourLayout); 
    tv.setText(yourArrayList.getItem(position)); 
    switch (position) { 
case 0: 
//set tv's color here... 
break; 
case 1: 
//set tv's color here... 
etc... 
default: 
//set default color or whatever... 
}  
     return v; 
    } 
+0

我收到一个错误mContext无法解析。在你的代码中什么是mContext? – Jonathan 2011-05-02 15:17:07

+0

在我的自定义类,我有一个私有变量mContact(和ArrayList 包含我正在上市的对象),我在构造函数中设置:\t公共MyCustomAdapter(的ArrayList 列表,上下文的背景下){ \t \t mMytringList =列表; \t \t mContext = context; \t} – jkhouw1 2011-05-02 15:28:44

+0

非常感谢,我一直试图找出这个问题两天了。非常感谢您的帮助。 – Jonathan 2011-05-02 17:29:18

相关问题