【发布时间】:2017-06-23 15:25:26
【问题描述】:
我有一个装有CursorAdapter 的微调器。现在,当(动态)创建该微调器时,我想设置一个不同于 0 的默认选择(0 是 CursorAdapter 列表中的第一项)
所以我得到了一个在对象创建后刚刚调用的作业的设置器。但是由于某种原因,无论我在那个 setter 中传递什么,0 总是传递给 Spinner 的 OnItemSelectedListener 中的 onItemSelected() 方法。
但是,如果我等到第一次初始选择发生并再次运行我的设置器,一切正常。所以,为了更清楚,这里是我在调试器中看到的:
- 对象(微调器)已创建
- 已附加微调器侦听器
- setter 运行,一个数字,比如说 4(微调器包含超过 4 个选择)被传递给
setSelection()方法 - 稍等
- 现在
onItemSelected()第一次运行,但该方法的位置为 0! - 再等一下
- 我们再次运行 setter
-
onItemSelected()再次运行,这一次,给出的位置是 4,因为它应该是!
现在已经连线了。在第一个初始选择(始终为 0)运行之前,似乎无法设置该微调器。那么为什么会这样?我该怎么做才能设置初始选择?
【问题讨论】:
-
能否请您发布设置 Spinner 时使用的代码?听起来可能是因为您的某些代码顺序错误
-
这个答案(关于另一个 SO 问题)对我有用:stackoverflow.com/a/17370964/1617737