如何才能获得仅改变列表中所选项目颜色的视图

时间:2013-02-12 06:26:45

标签: android android-listview selection

我正在开发一个应用程序,因为我有一个列表视图。在列表视图中,我想仅更改所选项目的颜色。这意味着如果我点击第1项它应该改变颜色然后我再次点击第2项,然后第1项的颜色将变为正常,它将改变第2项的颜色。这里我使用自定义列表视图。此处position是选定项目,CommonUtilities.getListPosition()是全局定义的存储位置的方法。我可以在选择时更改颜色,但是当我点击第二项时,颜色不会改变为以前的颜色。

if (position == CommonUtilities.getListPosition()) {
    v.setBackgroundColor(Color.CYAN);
}else{
    v.setBackgroundColor(Color.WHITE);
}

2 个答案:

答案 0 :(得分:0)

ListView item background via custom selector。 此链接将帮助您。使用选择器。按下时和正常模式下指定不同的颜色。我希望这正是你所寻找的。

当您单击列表视图中的某一行时,您可以在单击时更改列表视图的颜色。然后在释放变化回到正常状态。为什么要在单击第2行时更改第1行颜色? listview中的每一行都保持正常状态,直到被单击为止。释放后恢复正常状态。以上链接可帮助您实现相同目标。

答案 1 :(得分:0)

将ListSelector应用于ListView中的xml,如下所示:

android:listSelector="@drawable/list_selector"

在drawable文件夹中创建list_selector.xml文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/row_not_selected" android:state_pressed="false" android:state_selected="false"/>
    <item android:drawable="@color/row_selected" android:state_pressed="true" android:state_selected="true"/>

</selector>

并在名为colors.xml的{​​{1}}中创建两种颜色。

是的,谢谢。谢谢。 如果有任何其他要求,请告诉我。