ListView - 所选项目未按预期工作

时间:2012-07-19 17:24:19

标签: android android-listview

我有一个列表视图,当我选择一个项目时,它会填充一个详细信息视图。我想通过将其更改为绿色来显示列表视图中选择的项目。麻烦的是,在我点击同一项目两次之前,所选项目不会显示为绿色。我做错了什么 选定的项目,使其不会更改为绿色,直到该项目为止 点击了两次?这是我的xml选择器文件:

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

<!-- Active list item -->
<item android:state_selected="true"
    android:state_focused="false"
    android:state_pressed="false"
    android:drawable="@drawable/lv_bg_selected" />

<!-- Inactive list item -->
<item android:state_selected="false"
    android:state_focused="false"
    android:state_pressed="false"
    android:drawable="@drawable/lv_bg_unselected_state" />

<!-- Pressed list item --> 
<item android:state_pressed="true" 
    android:drawable="@drawable/lv_bg_pressed_state" />

</selector>

onListitemClick:

@Override
public void onListItemClick(ListView l, View v, int position, long id)
{
 .
 .
 .
 v.setSelected(true);
 .
 .
 .
}

1 个答案:

答案 0 :(得分:7)

将默认状态添加到选择器xml,特别是作为最后一项。

<selector ...>
   ...
   ...
    <!-- Normal list item --> 
    <item android:drawable="@drawable/lv_bg_normal_state" />
</selector>

更新

使用选择列表中的android:state_activated,列表视图中的setChoiceMode(ListView.CHOICE_MODE_SINGLE),并在点击项目时调用setItemChecked()

在您的getView方法中充气android.R.layout.simple_list_item_activated_1以使CHOICE_MODE_SINGLE正常工作。

有关详情,请参阅此帖: Showing the current selection in a listview