android从资源中获取颜色列表

标签 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="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>

源代码:

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]));
            }
           [..]

最佳答案

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

方法一

在 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>

在 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]);
}

方法二

不要指定不同颜色的名称

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

并使用它使用

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]));
}

关于android从资源中获取颜色列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33627551/

相关文章:

flash - ActionScript 3 : color effects under DisplayObject

javascript - 循环访问存储以验证网格中的列

c# - 通过 Row.Cells 访问 Gridview 列

android - 在 Ubuntu 上使用 Android 模拟器、真实设备和 Gimp 时的颜色差异

java - 任务管理器android 4.1.1中的openjdk平台二进制副本

c# - 忽略数据集中不存在的列(绑定(bind)字段)

java - 如何以编程方式将色调添加到给定颜色?

android - Android 5.0 如何延迟录屏?

android - 我需要延迟 Canvas 上的绘图

android - 以编程方式设置 RippleDrawable 角半径