我有一个列表视图,当我选择一个项目时,它会填充一个详细信息视图。我想通过将其更改为绿色来显示列表视图中选择的项目。麻烦的是,在我点击同一项目两次之前,所选项目不会显示为绿色。我做错了什么 选定的项目,使其不会更改为绿色,直到该项目为止 点击了两次?这是我的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);
.
.
.
}
答案 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