【发布时间】:2011-04-30 18:24:40
【问题描述】:
我对 onItemLongClick(...) 的第三个和第四个参数感到困惑。 根据AdapterView.OnItemLongClickListener
position - 视图在列表中的位置
id - 被点击的项目的行 id
我无法理解这些,请指教。
【问题讨论】:
我对 onItemLongClick(...) 的第三个和第四个参数感到困惑。 根据AdapterView.OnItemLongClickListener
position - 视图在列表中的位置
id - 被点击的项目的行 id
我无法理解这些,请指教。
【问题讨论】:
position 是被点击的元素在你的适配器中的位置(所以你可以这样做 adapter.getItem(position) )
row id 是对应于该元素的 id,即您的适配器在 getItemId() 方法中返回的内容。
【讨论】:
position是view在parent中的位置。对于ListView,它是行号。第一行是位置 0,第二行是位置 1,第三行是位置 2,依此类推。请注意,如果您的 ListView 有标题视图(就像您使用 ListView.addHeaderView(View) 一样),那么标题视图将是位置0 并且实际的行将从 1 开始编号。
有时 id 与 position 相同,有时又不同。如果您使用的是ArrayAdapter 或SimpleAdapter,那么它们是相同的(除非有一个标题视图,然后它们被关闭了一个)。对于CursorAdapter(以及随后的SimpleCursorAdapter),id 返回表的行ID,即_id。 Position 是 long 而不是 int,因为理论上数据库的行数可能比 int 可以容纳的行数多,而ListView 不会。
这里有一些其他相关的答案:
【讨论】:
Position 将返回该位置上的所有名称或值,例如,如果您在列表中显示 raj,kamal,prateek 并且位置 2 被选中,它将显示(返回)kamal。
如果您选择行 ID,它将返回特定的固定数字或位于该项目的 ID,例如同一程序上的 1,2,3,4 ... 如果您选择行 ID,它将返回 2,对于位置,它将返回 @987654324 @。
【讨论】: