传送 : Spinner | Android Developers
java.lang.Object | |||||
↳ | android.view.View | ||||
↳ | android.view.ViewGroup | ||||
↳ | android.widget.AdapterView<T extends android.widget.Adapter> | ||||
↳ | android.widget.AbsSpinner | ||||
↳ | android.widget.Spinner |
Spinner的继承结构比较复杂,在继承树中有AdapterView,这是比较重要的一项,因为我们就是通过Adapter来为Spinner设置下拉列表项的。
Spinner的重点问题就是下拉列表项的配置,通过之前组件的了解,我们知道资源组件的配置有两种方式,
一种是通过XML文件来配置,一种是通过程序来配置。而从Spinner的文档中,我们可以看到,对它的配置需要使用Adapter类的实现。
通过XML配置(当列表项已经确定的情况下)::
1. 首先要准备一个array 文件,用来填充列表的具体项。
<string-array name="leave_type"> <item>事假</item> <item>病假</item> <item>其他</item> </string-array>
<Spinner android:id="@+id/leave_type_class" android:layout_width="fill_parent" android:layout_height="wrap_content" android:prompt = "@string/please_choose_leave_type";<!-- 弹出选择框的title --> android:entries="@array/leave_type" /> <!-- 设置用 leave_type填充每一项 -->
<string name="@string/please_choose_leave_type">请选择请假类型:</string>
使用Adapter 生成每一项
1.接下来声明一个Spinner 控件
2.
private ArrayAdapter<String> leaveArrayAdapter = null; private Spinner leaverSpinner = null; private List<String> childNameList =new ArrayList<String>(); childNameList.add("陈思韵"); childNameList.add("陈志伟"); childNameList.add("张静晨"); childNameList.add("罗春晓"); leaverSpinner = (Spinner) findViewById(R.id.leaver_spinner); leaveArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,childNameList); leaveArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置按压的Resource,添加一个RadioButton选中效果 leaverSpinner.setAdapter(leaveArrayAdapter);
上述都是使用默认的布局,也可以自定义每一项的布局,继承自BaseAdapter 然后getView中绑定每一项的布局,
但是遇到一个问题,不像默认的布局,点击之后才会显示DropDown! 暂时还没有想到解决的办法!有idea 欢迎留言,或者私信我,谢谢!