2

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

1 回答 1

7

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

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

更新:

在您的选择器、列表视图中使用android:state_activatedsetChoiceMode(ListView.CHOICE_MODE_SINGLE)并在单击项目时调用setItemChecked()

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

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

于 2012-07-19T17:39:20.540 回答