Android Spinner.setSelection()不';行不通
我有一个微调器,其中填充了一个Android Spinner.setSelection()不';行不通,android,spinner,Android,Spinner,我有一个微调器,其中填充了一个光标或适配器。现在,在创建微调器(动态)时,我希望将默认选择设置为不同于0(0是CursorAdapter列表中的第一项) 因此,我为该作业设置了一个setter,该作业在创建对象后刚刚调用。但出于某种原因,无论我在该setter中传递什么,0总是传递给微调器的OnItemSelectedListener中的onItemSelected()方法 然而,如果我只是等到第一次初始选择发生,并再次运行我的setter,一切正常。因此,为了更清楚地说明这一点,我在调试器中看
光标或适配器
。现在,在创建微调器(动态)时,我希望将默认选择设置为不同于0(0是CursorAdapter
列表中的第一项)
因此,我为该作业设置了一个setter,该作业在创建对象后刚刚调用。但出于某种原因,无论我在该setter中传递什么,0总是传递给微调器的OnItemSelectedListener
中的onItemSelected()
方法
然而,如果我只是等到第一次初始选择发生,并再次运行我的setter,一切正常。因此,为了更清楚地说明这一点,我在调试器中看到了以下内容:
- 对象(微调器)已创建
- 已附加微调器侦听器
- setter运行时,一个数字,比如说4(微调器包含超过4个选择)被传递给
方法setSelection()
- 稍等
- 现在,第一次运行的是
,但该方法的位置为0李>onItemSelected()
- 再等一会儿
- 我们再次运行setter
- 再次运行
,这一次,给定的位置是4,正如它应该的那样李>onItemSelected()
现在这是有线的。在运行第一个初始选择(始终为0)之前,似乎无法设置该微调器。那么,为什么会是这样?我可以做些什么来设置初始选择?尝试
微调器#设置选择(int-position,boolean-animate)
使用animate=false。我记得不久前我也遇到过类似的问题,这就成功了。除了动画部分的差异外,内部实现似乎有所不同。如果您知道默认的选定微调器项,则可以按如下方式编写:
Spinner sp = (Spinner) findViewById(R.id.spinner);
sp.setSelection(0); // sets the first item
当您更改微调器项目选择时,将调用onItemselectedlistener。您能否发布设置微调器时使用的代码?听起来可能是因为您的某些代码顺序错误。这个答案(关于另一个SO问题)对我很有用: