Android - 将不同的imageview资源作为listview项目的状态

时间:2014-01-22 10:37:16

标签: android listview

我已经定制了一个listview项目。 每个项目列表都有一个imageview。

imageview的类型由类别变量定义,我保存在数据库中。

所以我们假设列表视图中有三个项目,分别是蓝色,红色和黑色。

所以CursorAdapter的bindView如下 -

    public void bindView(View view, Context context, Cursor cursor) {

String cat = cursor.getString(cursor.getColumnIndex(Constans.CATEGORY));

ImageView iv = (ImageView) view.findViewById(R.id.imageView);

    if (cat.equalsIgnoreCase("black")) {
                iv.setImageResource(R.drawable.black_un);
            }

            if (cat.equalsIgnoreCase("blue")) {
                iv.setImageResource(R.drawable.blue_un);
            }

            if (cat.equalsIgnoreCase("red")) {
                iv.setImageResource(R.drawable.red_un);
            }

}

现在我想做的是当按下listviewitem时 - 我希望imageview将显示相关的“按下”图像 -

我的意思是现在imageview显示非按下​​状态图像 - 但当用户按下listview项目时,我希望它会显示“已按下”的图像 - 而且imageview将再次呈现非按下的图像 - 就像你可以使用按钮一样。

任何想法我该怎么做?请注意,每个listview raw都有不同的图像 - 当然取决于类别。

1 个答案:

答案 0 :(得分:1)

使用选择器:

selector.xml:

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

<item android:drawable="@drawable/not_pressed_image" android:state_pressed="false"></item>
<item android:drawable="@drawable/pressed_image" android:state_pressed="true"></item>

</selector>

而不是设置一个drawable设置选择器,如:

iv.setImageResource(R.drawable.selector);