繁体   English   中英

Android Spinner.setSelection()不起作用

[英]Android Spinner.setSelection() doesn't work

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

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

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

  • 对象(微调器)已创建
  • 附加微调器监听器
  • setter运行,一个数字,让我们说4(微调器包含多于4个选项的方式)被传递给setSelection()方法
  • 稍等一会
  • 现在onItemSelected()第一次运行,但给该方法的位置是0!
  • 等一下
  • 我们再次运行二传手
  • 再次onItemSelected()运行,这个时间,给出的位置是4,因为它应该是!

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

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

如果您知道默认选择的微调器项,则可以按如下方式编写:

Spinner sp = (Spinner) findViewById(R.id.spinner);
sp.setSelection(0);   // sets the first item 

更改微调器项目选择时,将调用onItemselectedlistener。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM