Spinner And NumberPicker 使用详解

来源:互联网 发布:矩阵的伴随矩阵怎么求 编辑:程序博客网 时间:2024/06/06 01:04

1,Spinner 是Android提供的下拉选择控件。

~获取当前选择的字符串方法:sp.getSelectedItem().toString();

~设置Spinner不可用的方法:sp.setEnabled(false);



2,使用Spinner;
~1,一般使用:
#1,一般使用指的是每个item只是一个TextView的使用。
#2,直接使用:ArrayAdapter adapter = new ArrayAdapter(context,resource,list);
#3,加上adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);可以使spinner看起来更规范。


~2,特殊使用:
#1,特殊使用指的是需要自定义adapter的使用。
#2,直接使用PsAdapter,更改参数,对item的组成变量进行响应操作即可。
#3,一样加上adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


3,Spinner的辅助类样例:


public class PsAdapter extends ArrayAdapter<参数> {
private LayoutInflater inflate;
private int resource;




public PsArrayAdapter(Context context, int resource, List<参数> objects) {
super(context, resource, objects);
this.resource = resource;
inflate = LayoutInflater.from(context);
}



@Override
public View getView(int position, View convertView, ViewGroup parent) {
参数类型 item = getItem(position);
Holder holder;
if(convertView == null){
convertView = inflate.inflate(resource, null);
holder = new Holder();
//加载Xutils3
x.view().inject(holder,convertView);
convertView.setTag(holder);
}else{
holder = (Holder) convertView.getTag();
}

//进行响应

return convertView;
}

class Holder{
//加载响应控件
//@ViewInject()

}


}




4,NumberPicker 是android提供的另一种选择控件,举例说明。


5,NumberPicker 的使用:
~1,我把其加入了一个Dialog中使用。
~2,详解使用方法:
#1,获取对象:NumberPicker np = new NumberPicker(Context);
#2,设置显示的数组:np.setDisplayedValues(arr);//arr是数组名
#3,设置显示的最小值、最大值:(不设置会使用失败)
np.setMinValue(0);
np.setMaxValue(arr.length-1);
#4,设置一个tag用于记录上一次选择的位置 priavate static int tag=0;
if(tag!=0){
np.setValue(tag);
}
#5,关闭编辑状态(普通双击2下进入可编辑状态)
np.setDescendantFocusablility(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
#6,建立AlertDialog对象,并进行相应操作。


6,NumberPicker 的使用样例方法:


@Event(R.id.button1)
private void changeValue(View v) {


NumberPicker np = new NumberPicker(this);
final String[] str = { "中国", "辽宁", "东北", "黑龙江", "吉林", "长白山", "白山",
"白城", "北京", "沈阳", "大连", "鞍山", };
np.setDisplayedValues(str);
np.setMinValue(0);
np.setMaxValue(str.length - 1);
if (tag != 0) {
np.setValue(tag);
}
// np.setValue(4);
// 关闭可编辑状态
np.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
AlertDialog b = new Builder(this).setView(np)
.setPositiveButton("确定", new OnClickListener() {
// .setNegativeButton("取消", null)
@Override
public void onClick(DialogInterface dialog, int which) {
// 获取当前选中的角标位并记录
tag = np.getValue();
// str[tag] 取得才是角标对应数组中的值
bt.setText(str[tag]);

}
}).show();
// 设置弹出框的大小
b.getWindow().setLayout(500, 500);
}


}


1 0
原创粉丝点击