Android上的奇怪ListView选择行为

时间:2009-02-20 14:56:32

标签: android listview

有一项扩展ListActivity的活动。 该列表由扩展BaseAdapter的自定义适配器备份。

getListView().setFocusable(true);
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

我在(getSelectedItemPosition() == ListView.INVALID_POSITION)进行了简单的onPrepareOptionsMenu()检查,以禁用需要选择项目的项目。

现在,我在启动活动后做了什么(行动发生了 在模拟器下,ver.1.1)它看起来像:

  1. 点击菜单 - 禁用菜单项 - 确定
  2. 使用鼠标滚轮和点击菜单选择项目 - 项目已启用 -OK
  3. 点击列表外的任意位置,重复2)。这些物品没有 启用 - WTF?
  4. 从头开始,选择一个击中Del并移动鼠标的项目。该 结果与3相同。
  5. 为什么这些(3,4)事情不断发生在我身上? :) TIA。

1 个答案:

答案 0 :(得分:4)

依靠selectedItemPosition上的ListView可能是一种危险的方法。根据我的经验,如果列表失去焦点(通过点击其他内容),selectedItemPosition将设置为INVALID_POSITION

基本上,如果您的商品没有橙色的“突出显示”外观,请指望selectedItemPosition为空。

作为替代方案,您可能希望通过覆盖onItemClickonItemSelection方法并保存所选项目的索引来记住所选项目,然后使用它来控制菜单选项的可用性。