【发布时间】:2011-07-05 11:55:43
【问题描述】:
我正在使用listview,其中主键是text,而不是integer。它实际上是一个唯一的网址
到目前为止它工作正常,我什至设法将rawQuery() 中的url column 别名为_id,listview 很高兴地接受了它。
但现在我遇到了问题!
onListItemClick() 将 id 作为 long 返回,所以当我点击一个项目时,无论如何我都会得到 0。
是否可以通过其他方式获取点击的id?
【问题讨论】:
-
将 _id 列添加到您的 db 表中,然后 CursorAdapter 就可以正常工作了。这似乎是最简单的。
-
@Hermann:CursorAdapter 似乎工作得很好。一切都按预期显示在列表视图中。没有错误。但从 OnListItemClick 返回的 id 始终为零,因为它期望 id 为整数。如果 _id 是文本,我不明白为什么添加 _id 列会解决这个问题。此外,url 列别名为 _id,所以从适配器的角度来看,有一个 _id 列!
-
CursorAdapter(和 ContentProvider)需要一个整数类型的 _id 列。因此,如果您希望适配器正确运行,请添加整数类型的列 _id。带有url的列仍然可以是主键,仍然可以命名为id。
-
这肯定行得通,但是我又回到了我有一个整数 _id 的开始 :-) 我是 Android 新手,正在探索可能性,我认为使用 url 作为 _id会更合乎逻辑。
-
对抗框架并不是最好的办法。您应该接受必须有一个名为 _id 且类型为整数的列。您仍然可以拥有其他类型为字符串的唯一列。