RowId 和 Position 在 onItemLongClick 的参数中的区别



我对onItemLongClick(…)的第三和第四个参数感到困惑。根据AdapterView。OnItemLongClickListener

position -视图在列表中的位置

id -被单击的项的行id

我看不懂这些,请给点建议。

position是被点击的元素在适配器中的位置(所以你可以做adapter.getItem(position))

row id是对应于该元素的id,即适配器在getItemId()方法中返回的内容。

位置视图父视图中的位置。对于ListView,它是行号。第一行是位置0,第二行是位置1,第三行是位置2,以此类推。注意,如果你的ListView有一个标题视图(如果你做ListView.addHeaderView(View)),那么标题视图将是位置0,实际行将从1开始编号。

有时idposition相同,有时不同。如果你使用的是ArrayAdapterSimpleAdapter,那么它们是相同的(除非有一个标题视图,然后它们被一个关闭)。对于CursorAdapter(以及SimpleCursorAdapter), id返回表的行id,即_idPosition是一个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

最新更新