Android listview:在方向更改时保持项目处于选中状态

Android listview:在方向更改时保持项目处于选中状态,android,listview,Android,Listview,我知道这个问题已经被问过很多次了,但是没有一个答案对我有用 我有一个活动,它承载一个选择列表视图(-no support library anywhere)。 在OnCreate中创建活动时,使用自定义适配器(实现ListAdapter接口)从数据库条目填充列表 列表视图是一种自定义布局,在一个LinearLayout中包含两个文本视图 我有一份处理视觉指示的状态列表: <?xml version="1.0" encoding="utf-8"?> <selector xmlns

我知道这个问题已经被问过很多次了,但是没有一个答案对我有用

我有一个活动,它承载一个选择列表视图(-no support library anywhere)。 在OnCreate中创建活动时,使用自定义适配器(实现ListAdapter接口)从数据库条目填充列表

列表视图是一种自定义布局,在一个LinearLayout中包含两个文本视图

我有一份处理视觉指示的状态列表:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true" android:drawable="@color/orange_selected" />
    <item android:state_pressed="true" android:drawable="@color/orange_pressed" />
</selector>
其中ViewSelector是一个runnable,它只执行以下操作:

view.setSelected(true);
当我更改方向时,我通过onSaveInstanceState(bundle)将当前选定的行存储在传出包中,并在onCreate中重新提取它,将其传递到自定义适配器中

然后,适配器将在处理getView调用时检查所选的行索引:

if(SelectedRow == position)
    v.post(new ViewSelector(v));
虽然我在rows视图上调用了相同的方法来选择行(通过post),但该行不会被选中

一种方法是调用View.postDelayed(action,delayMillis)——然而,这是一个很大的难题,因为正确的时间延迟还取决于所讨论的平板电脑的处理速度


做这件事最好/正确的方法是什么。

也许这会有所帮助-感谢您抽出时间回答@anber。我试过这个,但不起作用。在方向更改之前选择的项目在更改之后不会被选择。
if(SelectedRow == position)
    v.post(new ViewSelector(v));