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