我有一个填充了CursorAdapter
的微调器。现在,当创建该微调器(动态)时,我想将默认选择设置为0(0是CursorAdapter
列表中的第一个项目)
所以我得到了一个在创建对象后刚刚调用的作业的setter。但由于某种原因,无论我在该setter中传递什么,0总是被传递给Spinner onItemSelected()
中的OnItemSelectedListener
方法。
但是,如果我等到第一次初始选择发生并再次运行我的二传手,一切正常。因此,为了使其更清楚,我在调试器中看到了:
setSelection()
方法onItemSelected()
第一次运行,但该方法的位置为0!onItemSelected()
运行,这个时间,给出的位置是4,因为它应该是!现在已经接通了。似乎不可能设置该微调器直到第一个初始选择(始终为0)运行。那么为什么它是这样的,我该怎么做才能设置初始选择?
答案 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。