【问题标题】:Strange ListView selection behavior on AndroidAndroid上奇怪的ListView选择行为
【发布时间】:2010-10-08 20:42:21
【问题描述】:

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

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

我做了一个简单的(getSelectedItemPosition() == ListView.INVALID_POSITION) 签入onPrepareOptionsMenu() 以禁用需要选择项目的项目。

现在,启动活动后我要做的事情(动作发生 在模拟器下,ver.1.1)它的样子:

  1. Hit menu - 菜单项被禁用 - OK
  2. 使用鼠标滚轮和点击菜单选择一个项目 - 项目启用 -好的
  3. 单击列表外的任意位置,重复 2)。物品没有收到 已启用 - WTF?
  4. 从头开始,点击 Del 并移动鼠标选择一个项目。这 结果与 3 相同。

为什么这些 (3, 4) 事情不断发生在我身上? :) TIA。

【问题讨论】:

    标签: android listview


    【解决方案1】:

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

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

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

    【讨论】:

    • 首先,感谢一流的书!喜欢它的清晰书写方式。至于 ListView,我 选择/突出显示了项目,但仍然没有(一致的)运气。在 Activity 启动后直接工作,但在执行完其他操作后不工作。感谢您提供另一种方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 2013-01-29
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多