view.setBackgroundColor()在android中不起作用

时间:2017-02-18 06:22:15

标签: android listview

我有两个列表listArrayitemStateList

listArray包含要在ListView中显示的文字,而itemStateList包含用于设置ListView中背景的颜色名称。但setBackgroundColor(Color.parseColor("#AAFF7F"))无效。

这是代码..

public void createAndSetAdapter(){

    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listArray);
    listView.setAdapter(adapter);

    for(int i = 0; i < listArray.size(); i++){
        switch (itemStateList.get(i)){
            case "Green_color":
                listView.getAdapter().getView(i, null, listView).setBackgroundColor(Color.parseColor("#AAFF7F"));
                break;
            case "red_color":
                listView.getAdapter().getView(i, null, listView).setBackgroundColor(Color.parseColor("#FFAAAA"));
                break;
            default:
                break;
        }
    }
}

为了检查listView.getAdapter().getView(i, null, listView)是否正在返回视图,我运行((TextView)listView.getAdapter().getView(i, null, listView)).getText.toString()并返回文本。

2 个答案:

答案 0 :(得分:1)

尝试使用:

listView.getAdapter().getView(i, null, listView).setBackgroundResource(R.color.black);

希望这会有所帮助!!

答案 1 :(得分:1)

首先在drawable中创建一个xml文件,像这样

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listview_background_shape">
    <stroke
        android:width="1dp"
        android:color="#ffffff" />
    <padding
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp" />
    <corners android:radius="5dp" />
    <solid android:color="@color/Transparent80" />
</shape>

然后将其用作

listView.getAdapter().getView(i, null, listView).setBackgroundResource(R.drawbale.xml_color_bg);