【问题标题】:Can I access ListView Item data and underlying database data from a ListView popup menu?我可以从 ListView 弹出菜单访问 ListView 项目数据和基础数据库数据吗?
【发布时间】:2016-02-04 14:16:35
【问题描述】:
  • 我有一个显示列表视图的活动。

  • Listview 使用 CursorAdapter 显示从 SQLite 数据库读取的数据。

  • 我已经实现了一个出现在每个 ListView 项目上的按钮。
  • 单击按钮会调用“onClickListener”,它会显示一个弹出菜单(通过膨胀“PopupMenu”)。
  • 我需要从 onMenuItemClick 处理程序中的 ListView 项访问数据才能继续处理。

有什么办法可以做到吗?

我问了一个包含代码的问题的更长版本,但没有得到任何回应,所以我认为它可能太长了,我现在已经删除了它。

我的代码显示我尝试以两种方式实现点击处理程序:-

  • 通过 XML android:onClick,因此点击处理程序出现在 Activity 代码中
  • 并且是动态的,因此单击处理程序出现在 CursorAdapter 代码中。

我也找不到访问列表项数据的方法。似乎无法通过 View 参数访问它。而 onMenuClick 只传递了 'MenuItem'

感谢您提供的任何指导

Sceenshot of my ListView

看来我可能会以错误的方式实现弹出菜单?

【问题讨论】:

  • Adapter为您做这件事...?
  • 辛苦了。但是适配器给我的只是它上次读取的数据,即 Listview 中的底部(或顶部)项目(取决于我上次滚动的方式)。谢谢你的评论
  • 我不敢相信这个非常简单的要求并不容易或显而易见 - ListView Items 的弹出菜单肯定是司空见惯的,并且大多数应用程序都想对 ListItem 数据做一些事情。 .. ... 但是我可以通过在按钮视图中将数据库表键作为标签传递来解决问题。有点肮脏的黑客,这意味着我必须再次读取数据库,所以它并不理想。哦,至少我可以克服障碍

标签: android listview


【解决方案1】:

为了完整起见,这是我的解决方案。

我从未找到直接访问ListItem 数据的方法。

相反,在CursorAdapter bindView 中,我向ListView button 添加了一个标签,持有ListItem 位置和数据库项键值。

然后在按钮单击处理程序上,我读取标签并将键值和(Cursor) mListview.getAdapter().getItem(mSelectedBikePosition) 保存在成员变量中,以便在onMenuItemClick 处理程序中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多