如何根据文本的第一个字符从资源动态加载颜色

Kes*_*sha 5 android

我有一个联系人列表,我想ListView根据它的第一个字符更改项目的textcolor .我为[az]取了颜色color.xml并想把它设置为我的颜色TextView.我采取过这样的事情.

我的color.xml

<color name="a">#ff0000</color>
<color name="b">#00ff00</color>
<color name="c">#0000ff</color>` 
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情.

textview1.setTextColor(
    getResources().getIdentifier("@color/" +  textview1.getText().toString().toLowerCase().charAt(0),
    null,
    getPackageName()));
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以执行此操作吗?任何人都可以建议我...在此先感谢...

mle*_*edy 0

问题中的代码片段的问题如下:

getResources().getIdentifier("@color/" +  textview1.getText().toString().toLowerCase().charAt(0),
    null,
    getPackageName())
Run Code Online (Sandbox Code Playgroud)

返回资源的标识符textview1.setTextColor(...),但传递给该方法的值应该是颜色值本身(它们都具有相同的int类型,这就是它可以编译的原因)。

固定解决方案如下所示:

int resId = getResources().getIdentifier("@color/" +  textview1.getText().toString().toLowerCase().charAt(0),
    null,
    getPackageName());
int color = getResources().getColor(resId, theme); // or use ContextCompat.getColor(...)
textview1.setTextColor(color);
Run Code Online (Sandbox Code Playgroud)