我在包含ListView的片段中使用了两个不同的视图。这些ListView使用相同的ListAdapter。在横向中,我在片段中以纵向显示列表视图,有一个按钮,显示包含列表视图的对话框。我的片段是setRetainedState(true),如果它不是null,我不会重新创建我的listAdapter。
我为ListItem的背景颜色设置了一个选择器,(如果state_activated =>红色背景;默认=> transparant)。初始化ListView时(在更改为横向和使用listview显示对话框时),我将ChoiceMode设置为CHOICE_MODE_SINGLE。
这样,如果我在ListView的OnItemClickListener中调用'view.setActvated(true)',那么正确的项目会得到正确的背景,一切正常。
我的下一步是在我的适配器中存储已激活视图的引用。在我的getView()方法中,我检查我正在构建的视图是否是我存储的视图。如果是这样,我调用'convertView.setActivated(true)'并返回convertView。但是当我使用相同的适配器重新创建ListView时,它不会设置激活的正确视图(或任何其他视图),即使为1个特定视图调用了setActivated(true)(使用Log.d检查)
如果我在OnItemClickListener中调用'view.setActivated(true)',我才会把它弄好