【发布时间】:2013-01-13 20:16:40
【问题描述】:
我对 Android 中的 Spinner 有疑问。从下拉列表中选择一个项目将在下次打开该下拉列表时调整它的偏移量。例如,如果我在 500 项下拉列表中选择第 100 项,下次我打开下拉列表时,第 100 项将位于列表顶部。这是我想要的行为。
当我将选择器功能与调用setSelection(int) 结合起来时,似乎出现了问题。通过以下步骤,我似乎打破了下拉微调器上的偏移系统。
- 打开微调器并选择第二个项目。
- 再次打开微调器,这次关闭它而不选择任何内容。
- 在 Spinner 上调用
setSelection(int),其值大于 2。 - 第三次打开微调器。请注意,偏移量与步骤 1 中的相同。
我查看了 Spinner 和 AdapterView 中的代码,但看不到任何我错过的公共调用。这是 Spinner 中的错误还是我的代码中的错误?
【问题讨论】:
-
据我了解您的问题,要实现将选定项目置于顶部的特定行为,您可能需要在每次选择时重新排序微调器适配器。
-
可以通过手动设置 id 的值,然后在任何你想要的地方调用它们来实现。
-
@Brad 给你的建议,有 500 件物品的微调器是不好的。你认为这会给用户带来良好的体验吗......而且我已经为我的仪表板应用程序实现了与 listview 相同的功能。对我来说没有问题..
-
500 项只是一个例子。