我对onItemLongClick(…)的第三和第四个参数感到困惑。根据AdapterView。OnItemLongClickListener
position -视图在列表中的位置
id -被单击的项的行id
我看不懂这些,请给点建议。
position
是被点击的元素在适配器中的位置(所以你可以做adapter.getItem(position)
)
row id
是对应于该元素的id,即适配器在getItemId()
方法中返回的内容。
位置是视图在父视图中的位置。对于ListView
,它是行号。第一行是位置0,第二行是位置1,第三行是位置2,以此类推。注意,如果你的ListView
有一个标题视图(如果你做ListView.addHeaderView(View)
),那么标题视图将是位置0,实际行将从1开始编号。
有时id与position相同,有时不同。如果你使用的是ArrayAdapter
或SimpleAdapter
,那么它们是相同的(除非有一个标题视图,然后它们被一个关闭)。对于CursorAdapter
(以及SimpleCursorAdapter
), id返回表的行id,即_id
。Position是一个long而不是int,因为理论上数据库可以拥有比int更多的行,而ListView
不能。
这里有一些其他相关的答案:
- https://stackoverflow.com/a/25622142/3681880
- https://stackoverflow.com/a/9863279/3681880
- https://stackoverflow.com/a/12966006/3681880
- https://stackoverflow.com/a/24531354/3681880
Position将返回放置在该位置上的所有名称或值,例如,如果您在列表中显示raj,kamal,prateek
,并且位置2被选中,它将显示(返回)kamal
。
如果您选择行ID,它将返回特定的固定数字或ID位于该项目,如1,2,3,4 ...
在同一程序中,如果您选择行ID,它将返回2,对于位置,它将返回kamal
。