Android上奇怪的ListView选择行为

Posted

技术标签:

【中文标题】Android上奇怪的ListView选择行为【英文标题】:Strange ListView selection behavior on Android 【发布时间】: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)它的样子:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

首先,感谢一流的书!喜欢它的清晰书写方式。至于 ListView,我 选择/突出显示了项目,但仍然没有(一致的)运气。在 Activity 启动后直接工作,但在执行完其他操作后不工作。感谢您提供另一种方式。

以上是关于Android上奇怪的ListView选择行为的主要内容,如果未能解决你的问题,请参考以下文章

ListView BaseAdapter 中的 EditText 奇怪行为

FliCard 和 ListView Android 中一个奇怪的可见性错误

listView 中复选框的奇怪行为

带有 CheckBox 的 ListView 的奇怪行为

ListView 中绑定属性和直接可见性变化的奇怪行为

android中ListView行的动态高度