【发布时间】:2012-03-06 01:31:48
【问题描述】:
所以我有一个包含 2 个 ListView 小部件的活动,当您在第一个小部件中选择一个值时,第二个将填充与第一个 ListView 中的选择相关的值。这个机制没有问题,但现在我希望用户选择保持突出显示。我已经阅读了大量与该主题相关的问题,似乎有无数种方法可以实现这一点,但在尝试了大约 4-5 次之后,我仍然无法让它发挥作用。
我已经使用android:listSelector="#CCCCCC" XML 属性在第二个ListView 上工作了,但是一旦将OnItemClickListener 引入到组合中(就像我在第一个@ 987654328@).
到目前为止,这是我所拥有的:
自定义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的背景颜色保持不变:/
我不敢相信这个简单的任务竟然如此复杂。
如果我省略了可能有用的代码,或者我的问题缺乏细节,请随时指出,我会尽力解释自己。
【问题讨论】:
-
我认为这与您使用的SDK版本有关。
-
API 级别 7 是我正在使用的。
-
i.masm 的帖子有一个链接到我的想法。 android-developers.blogspot.com/2008/12/touch-mode.html
标签: android listview android-listview highlighting