通过 ID 而不是位置使用 AlertDialog.Builder 的 setSingleChoiceItems
我正在使用 AlertDialog 显示数据库中项目的单选列表。我使用 AlertDialog.Builder 来构建它,但我对在这种情况下应该如何使用 setSingleChoiceItems 方法感到困惑。
具体来说,我知道首次显示对话框时应检查哪个项目,但我知道是通过 ID 而不是位置来检查的。 setSingleChoiceItems 方法需要所选项目的位置,而不是 ID。
我想到了两种不同的方法来解决这个问题,但它们似乎都不是“正确的”:
- 在使用构建器之前,查询数据库并计算行数,直到我 找到我想要选择的ID。现在我知道了这个位置。 但这看起来很糟糕,因为它需要第二次数据库查询。
- 使用构建器后,迭代列表项并找到 其中包含我想要选择的 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":
- 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. - 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的ID也是整数,您可以将位置本身设置为ID。
If your ID is also an integer, you can set the position itself as the ID.