Android Spinner绑定默认项
2016-10-20 16:30
1846 查看
Android Spinner只提供通过position绑定默认项的方法,但是实际上是通过text或者内部隐藏的value来绑定数据源,这篇文章利用了一个KeyValuePair的实体类BuilderSpinnerDataUtil来实现通过value或者text来绑定Spinner默认选中项,下面上代码.
1.KeyValuePair:绑定数据源的实体类,Spinner一般只需要一个Value和一个text绑定即可./**
*
* Key Value对应类,用于Spinner数据绑定
*
*/
public class KeyValuePair {
private String value = "";
private String text = "";
public KeyValuePair(String value, String text) {
this.value = value;
this.text = text;
}
@Override
public String toString() {
return text;
}
public String getValue() {
return value;
}
public String getText() {
return text;
}
}2.BuilderSpinnerDataUtil:Spinner绑定的工具类,提供通过value和text绑定默认项的方法
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
public class BuilderSpinnerDataUtil {
/**
* 根据值, 设置spinner默认选中:
* @param spinner
* @param value
*/
public void setSpinnerItemSelectedByValue(Spinner spinner,int value){
SpinnerAdapter apsAdapter= spinner.getAdapter(); //得到SpinnerAdapter对象
if(apsAdapter!=null){
int k= apsAdapter.getCount();
for(int i=0;i<k;i++){
if(value==Integer.parseInt(((KeyValuePair)apsAdapter.getItem(i)).getValue())){
spinner.setSelection(i,true);// 默认选中项
break;
}
}
}
}
/**
* 根据值, 设置spinner默认选中:
* @param spinner
* @param value
*/
public void setSpinnerItemSelectedByValue(Spinner spinner,String value){
SpinnerAdapter apsAdapter= spinner.getAdapter(); //得到SpinnerAdapter对象
if(apsAdapter!=null){
int k= apsAdapter.getCount();
for(int i=0;i<k;i++){
if(value.equals(apsAdapter.getItem(i))){
spinner.setSelection(i,true);// 默认选中项
break;
}
}
}
}
}总结,在这里也没有什么难点,只是有一个spinner.setSelection(i,true);这个方法或许不清楚,在这里以我的简介稍微介绍一下.
setSelection(position,flag); 第一个参数为索引值(就不介绍了),第二个参数:flag为true时,会立即layout,就相当于用户直接单击第position项,当在setItemSelectListener之前调用setSelection则不会触发OnItemSelectListener(但是依旧会绑定数据,只是不会触发那个方法而已);flag设置为false时,只是设置下一次选中的位置setNextSelectedPositionInt(position),然后请求layout,而不会立即执行requestLayout,只是一个schedule(安排),但是重新装载数据然后layout时可能丢失了某些状态,导致有时设置为false时,不会绑定默认选中项。
1.KeyValuePair:绑定数据源的实体类,Spinner一般只需要一个Value和一个text绑定即可./**
*
* Key Value对应类,用于Spinner数据绑定
*
*/
public class KeyValuePair {
private String value = "";
private String text = "";
public KeyValuePair(String value, String text) {
this.value = value;
this.text = text;
}
@Override
public String toString() {
return text;
}
public String getValue() {
return value;
}
public String getText() {
return text;
}
}2.BuilderSpinnerDataUtil:Spinner绑定的工具类,提供通过value和text绑定默认项的方法
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
public class BuilderSpinnerDataUtil {
/**
* 根据值, 设置spinner默认选中:
* @param spinner
* @param value
*/
public void setSpinnerItemSelectedByValue(Spinner spinner,int value){
SpinnerAdapter apsAdapter= spinner.getAdapter(); //得到SpinnerAdapter对象
if(apsAdapter!=null){
int k= apsAdapter.getCount();
for(int i=0;i<k;i++){
if(value==Integer.parseInt(((KeyValuePair)apsAdapter.getItem(i)).getValue())){
spinner.setSelection(i,true);// 默认选中项
break;
}
}
}
}
/**
* 根据值, 设置spinner默认选中:
* @param spinner
* @param value
*/
public void setSpinnerItemSelectedByValue(Spinner spinner,String value){
SpinnerAdapter apsAdapter= spinner.getAdapter(); //得到SpinnerAdapter对象
if(apsAdapter!=null){
int k= apsAdapter.getCount();
for(int i=0;i<k;i++){
if(value.equals(apsAdapter.getItem(i))){
spinner.setSelection(i,true);// 默认选中项
break;
}
}
}
}
}总结,在这里也没有什么难点,只是有一个spinner.setSelection(i,true);这个方法或许不清楚,在这里以我的简介稍微介绍一下.
setSelection(position,flag); 第一个参数为索引值(就不介绍了),第二个参数:flag为true时,会立即layout,就相当于用户直接单击第position项,当在setItemSelectListener之前调用setSelection则不会触发OnItemSelectListener(但是依旧会绑定数据,只是不会触发那个方法而已);flag设置为false时,只是设置下一次选中的位置setNextSelectedPositionInt(position),然后请求layout,而不会立即执行requestLayout,只是一个schedule(安排),但是重新装载数据然后layout时可能丢失了某些状态,导致有时设置为false时,不会绑定默认选中项。
相关文章推荐
- Android 之 Spinner 键值对的绑定
- Android 之 Spinner 键值对的绑定
- android Spinner默认不选中
- android Spinner 禁止OnItemSelectedListener默认自动调用一次
- android中Spinner修改默认文本框的样式
- Android 之 Spinner 键值对的绑定
- android在代码中设置Spinner默认选中的值
- android 更改spinner默认样式
- Android开发学习笔记:为动态添加的Spinner控件绑定数据源以及监听事件
- android spinner默认样式不支持换行和修改字体样式 的解决方法
- android 绑定spinner键值对显示内存地址的问题
- Android开发适配器系列:Spinner绑定ArrayAdapter适配器
- android Spinner默认不选中
- android开发步步为营之23:Spinner进阶绑定包含key和value的对象
- Android 之 Spinner 键值对的绑定
- android spinner 取消默认值,令请选择
- Android控件Spinner监听之绑定ImageView
- Android spinner的默认状态的保存
- Android Spinner 绑定键值对
- android实现下拉框(spinner),自定义大小颜色背景位置,去掉默认样式黑边