我现在在android中使用spinner一段时间了,我总是使用documentation中的内容,我会使用parent.getItemAtPosition(pos)
来获取Item,或者我会使用{{3}但问题是:文档说
onItemSelected(AdapterView<?> parent, View view, int position, long id)
中的id是所选项目的行ID
但是它!?
这是什么意思?如果选择了行的Id,我该如何获取或设置它?
如果long
的ID不是View
,那么它是int
吗?
感谢。
答案 0 :(得分:4)
您必须了解适配器在Android中的工作原理。基本上他们拿着一份物品清单。通常是一个数组(ArrayAdapter)或一个列表。该列表具有固定排序的项目。项目1在索引0处,依此类推。但是如果这是list通过ArrayAdapter绑定到ListView,则会要求ArrayAdapter为屏幕上可见的每一行创建一个视图。然后用相应的项初始化每一行(视图)。
但这些项目可能会以不同的顺序显示,例如字母升序。因此,位置是基础数组中项目的位置,这是固定的。而 rowId 是列表中显示在屏幕上的位置。 ListView中的行数通常比ArrayAdapter处理的基础列表小得多。在屏幕外滚动的这些行将重新用于进入屏幕的那些行。这样重用的行将由数组中的新项重新初始化(请参阅ArrayAdapter.getView中的参数convertView)。
我希望这张图片能够更详细地解释它。否则,请参阅documentation或this example。
希望这有帮助。