Android-自定义列表视图,每行不同颜色

Android-自定义列表视图,每行不同颜色,android,android-listview,custom-lists,Android,Android Listview,Custom Lists,我已经创建了自定义列表视图,每一行看起来都像我的文件custom_row.xml。有没有办法,如何分别为每一行设置不同的背景色(我需要设置它,因为我的行可以有不同的值) 感谢适配器中的任何想法,您可以在使用getView方法检索视图时手动设置视图的背景色 // set the background to green v.setBackgroundColor(Color.GREEN); 在适配器中,可以在使用getView方法检索视图时手动设置视图的背景色 // set

我已经创建了自定义列表视图,每一行看起来都像我的文件custom_row.xml。有没有办法,如何分别为每一行设置不同的背景色(我需要设置它,因为我的行可以有不同的值)


感谢适配器中的任何想法,您可以在使用getView方法检索视图时手动设置视图的背景色

    // set the background to green
    v.setBackgroundColor(Color.GREEN);

在适配器中,可以在使用getView方法检索视图时手动设置视图的背景色

    // set the background to green
    v.setBackgroundColor(Color.GREEN);

因为您在getView方法中执行自定义listview 膨胀自定义_row.xml后,更改 充气方法的返回视图。请参见下面的示例代码段:

public getView(int position, View convertView, ViewGroup parent) {
       convertView = getLayoutInflater().inflate(R.layout.custom_xml, null);
       do some stuff...

       //let say you have an arraylist of color
       convertView.setBackgroundColor(arraylist.get(position));

       //in case that your color is limited, just re-use your color again
       //and some logic how to re-use the colors.
}

因为您在getView方法中执行自定义listview 膨胀自定义_row.xml后,更改 充气方法的返回视图。请参见下面的示例代码段:

public getView(int position, View convertView, ViewGroup parent) {
       convertView = getLayoutInflater().inflate(R.layout.custom_xml, null);
       do some stuff...

       //let say you have an arraylist of color
       convertView.setBackgroundColor(arraylist.get(position));

       //in case that your color is limited, just re-use your color again
       //and some logic how to re-use the colors.
}

使用此处的其他答案会阻止选择器正常工作,并且选择器会完全停止高亮显示行。通过按照接受答案中的说明手动设置颜色,选择器在滚动时停止突出显示行。所以,让我来描述一个不会弄乱选择器的解决方案

正在描述如何用透明性解决此问题,但我无法真正使其工作。所以我的解决方案是在我的drawable文件夹中有两个列表选择器。这样,我可以在运行时设置两种不同的背景色,并保持选择器工作

为我的深灰色线条列出\u选择器\u darkgrey.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_bg_darkgrey" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_bg" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/>
</selector>

使用此处的其他答案会阻止选择器正常工作,并且选择器会完全停止高亮显示行。通过按照接受答案中的说明手动设置颜色,选择器在滚动时停止突出显示行。所以,让我来描述一个不会弄乱选择器的解决方案

正在描述如何用透明性解决此问题,但我无法真正使其工作。所以我的解决方案是在我的drawable文件夹中有两个列表选择器。这样,我可以在运行时设置两种不同的背景色,并保持选择器工作

为我的深灰色线条列出\u选择器\u darkgrey.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_bg_darkgrey" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_bg" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="true"/>
<item android:drawable="@drawable/gradient_bg_hover" android:state_pressed="false" android:state_selected="true"/>
</selector>