我有一个活动,其中有两个 ListView
组件。当你在第一个组件中选择一个值时,第二个组件将填充与第一个 ListView
中选择相关的值。这个机制可以正常工作,但现在我想让用户的选择保持高亮显示。
我已经在第二个 ListView
上使用了 android:listSelector="#CCCCCC"
XML 属性使其工作良好,但一旦引入 OnItemClickListener
(像我在第一个 ListView
上使用的那个)后,这种效果好像被清除了。
到目前为止,这就是我所拥有的:
我在浏览有关此主题的各种答案时发现了自定义的 OnItemClickListener
(稍微修改了一下,以便它能够加载我信息到第二个 ListView):
private class ItemHighlighterListener implements OnItemClickListener {
private View oldSelection = null;
public void clearSelection() {
if(oldSelection != null) {
oldSelection.setBackgroundColor(android.R.color.transparent);
}
}
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
clearSelection();
oldSelection = view;
view.setBackgroundDrawable(view.getContext().getResources().getDrawable(R.drawable.list_selector));
loadClubs(mXMLPortalOptions.getRegion(pos).getId());
mClubList.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item_white, mClubs));
}
}
以下是我的list_selector.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"><shape>
<solid android:color="#CCCCCC" />
</shape></item>
<item android:state_selected="false"><shape>
<solid android:color="#FFFFFF" />
</shape></item>
</selector>
这个方法(OnItemClick)被调用并执行了,但是我的ListItem
的背景颜色仍然保持不变 :/
我无法相信这个简单的任务已经变得如此复杂。
如果我省略了有用的代码,或者我的问题缺少细节,请随意指出,我会尽力解释清楚。