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

Mar*_* S. 2 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>
Run Code Online (Sandbox Code Playgroud)

并在onListitemClick:

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

Ron*_*nie 7

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

<selector ...>
   ...
   ...
    <!-- Normal list item --> 
    <item android:drawable="@drawable/lv_bg_normal_state" />
</selector>
Run Code Online (Sandbox Code Playgroud)

更新:

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

充气android.R.layout.simple_list_item_activated_1在getView方法来获取CHOICE_MODE_SINGLE工作.

有关更多详细信息,请参阅以下文章: 在列表视图中显示当前选择