android从资源获取颜色列表

android从资源获取颜色列表,android,gridview,colors,adapter,Android,Gridview,Colors,Adapter,我有一个带有名称和颜色代码的数组。我想用数组中的颜色给gridview中的单元格上色。我创建了此代码,但得到了NPE,错误如下: Logcat输出: Caused by: java.lang.NullPointerException 10-06 11:03:30.513 25902-25902/? E/AndroidRuntime: at android.graphics.Color.parseColor(Color.java:211) 颜色XML文件: <array name="co

我有一个带有名称和颜色代码的数组。我想用数组中的颜色给gridview中的单元格上色。我创建了此代码,但得到了NPE,错误如下:

Logcat输出:

Caused by: java.lang.NullPointerException
10-06 11:03:30.513 25902-25902/? E/AndroidRuntime:
at android.graphics.Color.parseColor(Color.java:211)
颜色XML文件:

 <array name="colors">
<item name="White">#FFFFFF</item>
    <item name="Ivory">#FFFFF0</item>
    <item name="LightYellow">#FFFFE0</item>
    <item name="Yellow">#FFFF00</item>
    <item name="Snow">#FFFAFA</item>
    <item name="FloralWhite">#FFFAF0</item>
 </array>

#FFFFFF
#FFFFF0
#FFFF0
#FFFF00
#FFFAFA
#FFFAF0
源代码:

public class ColorPickerAdapter extends BaseAdapter {

      private Context context;
      private List<Integer> colorList = new ArrayList<Integer>();

      public ColorPickerAdapter(Context context) {
           this.context = context;
           String colors[] = context.getResources().getStringArray(R.array.colors);

           colorList = new ArrayList<Integer>();

            // add the color array to the list
           for (int i = 0; i < colors.length; i++) {
                colorList.add(Color.parseColor(colors[i]));
            }
           [..]
公共类ColorPickerAdapter扩展BaseAdapter{
私人语境;
private List colorList=new ArrayList();
公共颜色选择器适配器(上下文){
this.context=上下文;
字符串颜色[]=context.getResources().getStringArray(R.array.colors);
colorList=newarraylist();
//将颜色数组添加到列表中
for(int i=0;i
尝试用以下方式定义阵列:

   <string-array name="colors">  
        <item>#FFFFFF</item>  
        <item>#FFFFF0</item>  
         ...
   </string-array>

#FFFFFF
#FFFFF0
...

您的资源似乎有误。您应该怎么做

方法1

在colors.xml中

<color name="Ivory">#FFFFF0</color>
<color name="LightYellow">#FFFFE0</color>
<color name="Yellow">#FFFF00</color>
<color name="Snow">#FFFAFA</color>
<color name="FloralWhite">#FFFAF0</color>
#fffff 0
#FFFF0
#FFFF00
#FFFAFA
#FFFAF0
在arrays.xml中:

<array name="colors">
    <item>@color/Ivory</item>
    <item>@color/LightYellow</item>
    <item>@color/Yellow</item>
    <item>@color/Snow</item>
</array>

@颜色/象牙色
@颜色/浅黄色
@颜色/黄色
@颜色/雪
然后使用

int[] colors = context.getResources().getIntArray(R.array.colors);

for (int i = 0; i < tileColumns; i++) {
    colorList.add(colors[i]);
}
int[]colors=context.getResources().getIntArray(R.array.colors);
for(int i=0;i
方法2

不要指定不同颜色的名称

<resources>
    <string-array name="colors">        
        <item>#FFFFF0</item>
        <item>#FFFFE0</item>  
        <item>#FFFF00</item>
        <item>#FFFAFA</item>
        <item>#FFFAF0</item>
    </string-array>
</resources>

#FFFFF0
#FFFF0
#FFFF00
#FFFAFA
#FFFAF0
并使用

String colors[] = context.getResources().getStringArray(R.array.colors);
colorList = new ArrayList<Integer>();

// add the color array to the list
for (int i = 0; i < colors.length; i++) {
    colorList.add(Color.parseColor(colors[i]));
}
stringcolors[]=context.getResources().getStringArray(R.array.colors);
colorList=newarraylist();
//将颜色数组添加到列表中
for(int i=0;i