2011-05-02 81 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

相關問題