Android入门/ Spinner组件(二十)

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

实现的效果图:

Android入门/ Spinner组件(二十)_第1张图片


使用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);

Android入门/ Spinner组件(二十)_第2张图片

上述都是使用默认的布局,也可以自定义每一项的布局,继承自BaseAdapter 然后getView中绑定每一项的布局,

但是遇到一个问题,不像默认的布局,点击之后才会显示DropDown! 暂时还没有想到解决的办法!有idea 欢迎留言,或者私信我,谢谢!

你可能感兴趣的:(Android入门/ Spinner组件(二十))