android.widget.Spinner
2014-04-01 09:01
639 查看
正文 问题很奇怪,此外还发现适配完数据后会默认选中第一个,并且这个默认选中第一个的操作并不是马上执行的,而是一段时候后再执行,并触发OnItemSelectedListener事件。下面直奔主题:
旧代码: spinner.setAdapter(adapter);
spinner.setSelection(2);
新代码: spinner.setAdapter(adapter);
spinner.setSelection(2,true); 在来看setSelection有两个参数的函数重载的说明:setSelection(int position, boolean animate) 英文:Jump directly to a specific item in the adapter data. 中文:直接跳到数据适配器中指定项。
以下是两个函数的源代码:
/**
* Jump directly to a specific item in the adapter data.
*/
publicvoid setSelection(int position, boolean animate) {
// Animate only if requested position is already on screen somewhere
boolean shouldAnimate = animate && mFirstPosition <= position &&
position <= mFirstPosition + getChildCount() -1;
setSelectionInt(position, shouldAnimate);
}
@Override
publicvoid setSelection(int position) {
setNextSelectedPositionInt(position);
requestLayout();
invalidate();
}
结束
看起来像是专门准备了一个函数在数据适配(填充)完后设置默认值的,可惜API文档还没有翻译到这里,不然少走这个弯路了 :)
旧代码: spinner.setAdapter(adapter);
spinner.setSelection(2);
新代码: spinner.setAdapter(adapter);
spinner.setSelection(2,true); 在来看setSelection有两个参数的函数重载的说明:setSelection(int position, boolean animate) 英文:Jump directly to a specific item in the adapter data. 中文:直接跳到数据适配器中指定项。
以下是两个函数的源代码:
/**
* Jump directly to a specific item in the adapter data.
*/
publicvoid setSelection(int position, boolean animate) {
// Animate only if requested position is already on screen somewhere
boolean shouldAnimate = animate && mFirstPosition <= position &&
position <= mFirstPosition + getChildCount() -1;
setSelectionInt(position, shouldAnimate);
}
@Override
publicvoid setSelection(int position) {
setNextSelectedPositionInt(position);
requestLayout();
invalidate();
}
结束
看起来像是专门准备了一个函数在数据适配(填充)完后设置默认值的,可惜API文档还没有翻译到这里,不然少走这个弯路了 :)
相关文章推荐
- API 25 (Android 7.1.1 API) widget.AbsSpinner
- API 25 (Android 7.1.1 API) widget.Spinner
- Android中动态添加╱删除的Spinner菜单 — ArrayList与Widget的依赖性
- android自定义tabwidget,popupwindow,spinner,dialog,listview
- android AutoCompleteTextView和Spinner选中项加亮
- android 标题栏下拉选择控件(下拉菜单宽度全屏显示spinner)
- Android之AppWidget的按钮事件开启Activity
- 自定义Android的Spinner
- Android Spinner控件之键值对用法
- Spinner android:entries属性/ xml 中 @array 写法
- Android开发之组件单选框(RadioButton)多选框(CheckBox)下拉框(Spinner)
- w.song.android.widget.jar使用时常见错误解答
- android Spinner控件详解
- 解决方法 android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState
- Android异常--Error inflating class android.support.design.widget.FloatingActionButton
- Android系统UI设计之:Widget控件
- android Spinner
- 安卓官方ViewPager与android.support.design.widget.TabLayout双向交互联动切换 。
- 【Android开发:自定义控件系列一】仿android4.0 Spinner下拉效果
- Android动画效果Widget(飞行模式)