android spinner适配器OnItemSelectedListener行Id是什么

android spinner适配器OnItemSelectedListener行Id是什么,android,spinner,onitemselectedlistener,Android,Spinner,Onitemselectedlistener,我在android中使用spinner已经有一段时间了,我总是使用它在中所说的内容,我会使用parent.getItemAtPosition(pos)来获取项目,或者我会使用它,但问题是:文档说 已选择中的id(AdapterView父项、视图、int位置、, 长id)是所选项目的行id 但它是吗 这是什么意思 如果它是所选行的Id,我如何获取或设置它 如果它是视图的Id,那么它就是long,它不应该是int 谢谢。您必须了解适配器在Android中是如何工作的。基本上,他们持有一份物品清单。通

我在android中使用spinner已经有一段时间了,我总是使用它在中所说的内容,我会使用
parent.getItemAtPosition(pos)
来获取项目,或者我会使用它,但问题是:文档说

已选择
中的id(AdapterView父项、视图、int位置、,
长id)
是所选项目的行id

但它是吗

这是什么意思

如果它是所选行的Id,我如何获取或设置它

如果它是
视图的Id,那么它就是
long
,它不应该是
int


谢谢。

您必须了解适配器在Android中是如何工作的。基本上,他们持有一份物品清单。通常是数组(ArrayAdapter)或列表。该列表具有固定顺序的项。项目1位于索引0处,依此类推。但如果此列表通过ArrayAdapter绑定到ListView,则会要求ArrayAdapter为屏幕上可见的每一行创建一个视图。然后用相应的项初始化每一行(视图)

但是项目可能以不同的顺序显示,如字母升序。因此,位置是项在基础数组中的位置,它是固定的。而rowId是屏幕上显示的列表中的位置。ListView中的行数通常比ArrayAdapter处理的基础列表小得多。滚动到屏幕外的这些行将被重新用于进入屏幕的那些行。这样重复使用的行将由数组中的新项重新初始化(请参阅ArrayAdapter.getView中的参数convertView)

我希望这张图片能更详细地解释它。否则,请参阅或

希望这有帮助


如果我理解正确。您是说id是由系统设置的,无法设置?正确。它由UI处理,并帮助您检索底层对象。但这不是你设定的。谢谢。我不会接受你的回答,看看是否有人回答了一个把戏或什么好的澄清。从名称
rowId
来看,我觉得这是一个唯一的id,您可以在单击该行时以某种方式分配给该行以识别它。显然情况并非如此。