通过 ID 而不是位置使用 AlertDialog.Builder 的 setSingleChoiceItems

发布于 2024-12-01 08:45:26 字数 500 浏览 0 评论 0原文

我正在使用 AlertDialog 显示数据库中项目的单选列表。我使用 AlertDialog.Builder 来构建它,但我对在这种情况下应该如何使用 setSingleChoiceItems 方法感到困惑。

具体来说,我知道首次显示对话框时应检查哪个项目,但我知道是通过 ID 而不是位置来检查的。 setSingleChoiceItems 方法需要所选项目的位置,而不是 ID。

我想到了两种不同的方法来解决这个问题,但它们似乎都不是“正确的”:

  1. 在使用构建器之前,查询数据库并计算行数,直到我 找到我想要选择的ID。现在我知道了这个位置。 但这看起来很糟糕,因为它需要第二次数据库查询。
  2. 使用构建器后,迭代列表项并找到 其中包含我想要选择的 ID,然后在事后选择它。 这可行,但这意味着我需要在 setSingleChoiceItems 调用,然后再设置。这感觉就像一个 黑客给我。

所以,我的问题是,我还缺少其他更好的方法吗?或者以上任一方法是解决此问题的最佳方法吗?

I am using an AlertDialog to display a single choice list of items from a database. I use the AlertDialog.Builder to build it, but I'm stumped as to how I should use the setSingleChoiceItems method in this situation.

Specifically, I know which item should be checked when the dialog is first shown, but I know that by ID, not by position. The setSingleChoiceItems method requires the selected item's position, not ID.

I've thought of two different ways to approach this, but neither of them seem "right":

  1. Before using the builder, query the database and count rows until I
    find the ID that I want to be selected. Now I know the position.
    This seems bad though, because it requires a second database query.
  2. After using the builder, iterate through the list items and find the
    one with the ID I want selected and then select it after the fact.
    This works, but that means I need to put a -1 in the
    setSingleChoiceItems call and then set it later. This feels like a
    hack to me.

So, my question is, is there some other better method that I'm missing? Or is either of the above the best way to approach this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

网白 2024-12-08 08:45:26

如果您的ID也是整数,您可以将位置本身设置为ID。

If your ID is also an integer, you can set the position itself as the ID.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文