2013-07-24 53 views
0

我是Android新手。無法在ExpandableListView中設置自定義顏色

我想在ExpandableListView適配器內設置自定義顏色。我在colors.xml中定義了我的顏色,但我無法在我的適配器中使用它們。我得到一個錯誤「方法getResources()未定義類型ExpandableListAdapter」

函數需要一個int。我試圖從getResources中傳遞我的結果,但是它不起作用。我也嘗試過傳入十六進制值,但它不會改變任何東西。

如何在我的代碼中使用自定義顏色?

public View getGroupView(int groupPosition, boolean arg1, View convertView, 
     ViewGroup arg3) { 
    int n = 0; 
    String laptopName = (String) getGroup(groupPosition); 
    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.group_item, null); 
    } 
    TextView item = (TextView) convertView.findViewById(R.id.demo); 
    item.setTypeface(null, Typeface.BOLD); 
    item.setText(laptopName); 

    convertView.setBackgroundColor(getResources().getColor(R.color.purple)); 

    return convertView; 
} 

謝謝你們,下面的代碼片段工作

this.context = (Activity) context; 
    convertView.setBackgroundColor(this.context.getResources().getColor(R.color.purple)); 

回答

1

假設你的適配器,而不是這個

convertView.setBackgroundColor(getResources().getColor(R.color.purple)); 

地方有上下文實例應該是這樣

convertView.setBackgroundColor((your context).getResources().getColor(R.color.purple)); 

,如果你沒有上下文的引用只是通過它進入適配器構造器

+0

謝謝。我會發布我的更新代碼 – user1801060

0

可以聲明的顏色在你的.xml文件(在您的項目XML文件)

1

正如loulou8284提到的,你可以把它放在你的XML,或者如果它是固定的,用Color.rgb()來定義它,但是爲了讓你的代碼運行,你需要獲得對Context的引用,因爲你的類沒有在上下文類中聲明:

convertView.setBackgroundColor(getContext().getResources().getColor(R.color.purple)); 
+0

不起作用。我得到:錯誤「方法getContext()未定義類型ExpandableListAdapter」 – user1801060

+0

它因爲你不能在適配器中調用該方法 – SemaphoreMetaphor

0

使用setBackgroundResource()而不是setBackgroundColor()

setBackgroundResource()將整數資源索引作爲參數,並加載該索引指向的任何資源(例如,一個可繪製的,一個字符串或在你的情況下一個顏色)。

setBackgroundColor(),但是需要一個表示顏色的整數。也就是說,不是顏色資源,而是直接的十六進制rgba值(0xAARRGGBB)。

相關問題