Android入门/ Spinner组件(二十)

来源:互联网 发布:外国人评价道德经知乎 编辑:程序博客网 时间:2024/05/21 09:33

传送 :  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>  

2. 接下来声明一个Spinner 控件

    <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填充每一项 -->

3. string.xml

<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 欢迎留言,或者私信我,谢谢!