Spinner的基本用法无须赘述,网上用法很多。
监听器就是OnItemSelectedListener这个
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(
AdapterView<?> parent,
View view,
int position,
long id) {
//这里的view指的点击的那个view
//position指的是spinner中被点击的位置
//一般用到的就是这两个变量
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
设置不可用
mSpinner.setEnabled(false);
设置选定某一个位置
mSpinner.setSelection(0);
mSpinner.setSelection(0,true);//会触发重绘
在平时的项目中,用到了fragment+viewpager的架构,spinner在fragment中没有刷新位置
大家知道viewpager的预加载机制,相邻的pager会被提前加载,所以在第三个fragment中的spinner应该会在滑动到第一个的时候重新触发onCreateView方法,但是实际效果却没有触发重新定位
后来发现可能是因为onViewStateRestore这个生命周期方法中的参数保存了使用了之前销毁的信息并重新设置了spinner,后来在该方法中重新设置Spinner的位置,就实现了刷新功能。
基本功能网上有很多的教程,这里记录了自己使用Spinner时遇到的一些小问题。