在安卓中,Spinner的getSelectedItemId和getSelectedItemPosition之间有什么区别?

6

请帮我解决以下问题 =>

getSelectedItemIdgetSelectedItemPositionspinner 中有什么区别?


2
Spinner中的每个项目都有自己的ID,这不是Spinner数据集中的位置。位置是数据集中的位置。 - ThaMe90
1个回答

9
我知道这已经很老了,但为了日后参考,以下是我发现的内容:getSelectedItemPosition() 的工作方式与您预期的一样,它返回仅包含项目的数组中所选项目的位置。例如,当使用以下数组数据创建适配器时:
["Alice", "Bob", "Carol", "Dave"]

假设当前选择的是 Carol,那么这个方法将返回 2,即数组中 Carol 的索引。


现在来看一下更有趣的部分,getSelectedItemId(): 如果 Spinner 是使用 SimpleCursorAdapter 等适配器设置的,那么该方法就非常有用。通过传入一个 Cursor,就可以实现数据的填充和管理。该 Cursor 中可能包含两列,分别为 _idsomeValue(id 列的名称必须为 _id,第二列可以取任何名称)。

+-----+-------+
| _id | name  |
+-----+-------+
|  55 | Alice |
|  67 | Bob   |
|  72 | Carol |
|  84 | Dave  |
+-----+-------+

假设选择了Carol,此方法将返回72,即所选行的“_id”列的值。

当SpinnerAdapter基于“普通数组”时,id和position似乎是相同的,这两种方法都将返回相同的值。


我不能保证这些信息完整且100%准确,但这是我通过试验和错误发现的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接