Pau*_*den 27 user-interface android android-listview
我感到困惑之间的差异postion和row id在ListActivity.onListItemClick().
该文档包含以下内容:
position The position of the view in the list
id The row id of the item that was clicked
Run Code Online (Sandbox Code Playgroud)
这两者之间有什么实际区别吗?我假设,由于存在两个不同的参数,即存在值不同的情况,但基于文档中使用的措辞,很难看出这种差异可能是什么.是否其中一个可以保存由某个Cursor或其他特殊功能提供的数据库行ID的值?
Laz*_*nja 34
position:列表中视图的位置
id:单击的项目的行ID
位置从ListView的顶部到底部的0开始,而要获得正确的行id,传递给适配器的游标包含一个名为"_id"的列,表示表中每行的唯一ID是很重要的. .
如果您正在使用ArrayAdapter,position并且id变得相同.id将是返回值,Adapter.getItemId(int)所以如果你使用ArrayAdapter它将与位置相同 - 快速搜索ArrayAdapter源代码显示它使用返回位置; 计算出身份.
Ric*_*ier 27
Lazy Ninja的答案大多是正确的,但忽略了使用ArrayAdapter带有通过调用ListView.addHeaderView(View)方法添加的标题视图的情况.
如果您的列表有标题项,则它将位于0位置.
所以列表中的第一个"真实"项目将具有:
position = 1id = 0通常,position= id+ number_of_header_views
如果您决定在已经正常工作的代码中将标题视图添加到列表中,这一点很重要.
如果您使用的是访问项目position,则需要按以下方式更新代码:
position - 1作为索引id作为索引ListView.getItemAtPosition(int)而不是Adapter.getItem(int)另请参阅此问题以进行相关讨论: