0

我是安卓新手。

我正在尝试在 ExpandableListView 适配器中设置自定义颜色。我在colors.xml 中定义了我的颜色,但我无法在我的适配器中使用它们。我收到错误“ExpandableListAdapter 类型的方法 getResources() 未定义”

该函数需要一个 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));
4

4 回答 4

1

正如 loulou8284 提到的,您可以将它放在您的 XML 中,或者如果它已修复,则使用 定义它Color.rgb(),但是要使您的代码运行,您需要获取对 Context 的引用,因为您的类未在上下文类中声明:

convertView.setBackgroundColor(getContext().getResources().getColor(R.color.purple));
于 2013-07-24T22:59:34.827 回答
1

假设您在适配器中的某处有一个上下文实例而不是这个

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

应该是这个

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

如果您没有对上下文的引用,只需将其传递给适配器构造函数

于 2013-07-24T23:00:19.450 回答
0

您可以在 .xml 文件中声明颜色(在您的项目 xml 文件中)

于 2013-07-24T22:50:29.070 回答
0

使用setBackgroundResource()而不是setBackgroundColor()

setBackgroundResource() 将整数资源索引作为参数,并加载索引指向的任何资源(例如;可绘制对象、字符串或在您的情况下为颜色)。

但是 setBackgroundColor() 采用一个表示颜色的整数。也就是说,不是颜色资源,而是直接的十六进制 rgba 值 (0xAARRGGBB)。

于 2013-07-24T23:02:37.827 回答