Android Spinner.setSelection()不起作用

时间:2012-01-28 19:57:45

标签: android spinner

我有一个填充了CursorAdapter的微调器。现在,当创建该微调器(动态)时,我想将默认选择设置为0(0是CursorAdapter列表中的第一个项目)

所以我得到了一个在创建对象后刚刚调用的作业的setter。但由于某种原因,无论我在该setter中传递什么,0总是被传递给Spinner onItemSelected()中的OnItemSelectedListener方法。

但是,如果我等到第一次初始选择发生并再次运行我的二传手,一切正常。因此,为了使其更清楚,我在调试器中看到了:

  • 创建了对象(微调器)
  • 附加了微调器侦听器
  • 运行setter,一个数字,让我们说4(微调器包含多于4个选项的方式)传递给setSelection()方法
  • 等待BIT
  • NOW onItemSelected()第一次运行,但该方法的位置为0!
  • 等待更多
  • 我们再次运行setter
  • 再次onItemSelected()运行,这个时间,给出的位置是4,因为它应该是!

现在已经接通了。似乎不可能设置该微调器直到第一个初始选择(始终为0)运行。那么为什么它是这样的,我该怎么做才能设置初始选择?

2 个答案:

答案 0 :(得分:31)

使用animate = false尝试Spinner#setSelection (int position, boolean animate)。我记得有一段时间我有一个类似的问题,这就是诀窍。内部实现似乎与动画部分的差异不同。

答案 1 :(得分:0)

如果你知道默认选择的微调项目,可以写成如下:

Spinner sp = (Spinner) findViewById(R.id.spinner);
sp.setSelection(0);   // sets the first item 
更改微调器项目选择时,将调用

onItemselectedlistener。