Spinner
属性:android:spinnerMode="" 下拉菜单的展示方式
属性值:dropdown-下拉方式(默认的) dialog-对话框方式
如果下拉方式是dialog,那么可以指定标题android:prompt="@string/title"(只能引用,不能直接写文字)
android:entries="@array/books" 填充下拉菜单的内容-
填充方式
1.属性填充:数据源不会经常发生变化,使用该方式
在xml文件中定义数据源,然后在spinner中通过属性调用
2.使用ArrayAdapter填充数据
适用于:item只有一个文本,不能显示图片
数据源:自定义数组或list
步骤:a.得到控件并初始化 b.得到数据源 c.得到适配器
第一种方式 数据源是String[] 三个参数 , 在这个Activity中有2个页面/** * context 上下文对象 * resource 每个Item的布局文件(文件中只能有一个TextView控件,没有布局和其他控件) * objects 数据源 */ ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, data); 第二种方式 数据源是String[] 四个参数 /** * context 上下文对象 * resource 每个Item的布局文件(可以有布局,但是必须有TextView控件) * textViewResourceId 布局文件中的TextView的ID * objects 数据源 * */ ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, R.layout.spinner_item_02, R.id.tv, data); 第三种方式 数据源List<String> 三个参数 在这个Activity中有2个页面 /** * context 上下文对象 * resource 每个Item的布局文件(文件中只能有一个TextView控件,没有布局和其他控件) * objects 数据源 */ ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_spinner_item, data); 第四种方式 数据源是List<String> 四个参数 /** * context 上下文对象 * resource 每个Item的布局文件(可以有布局,但是必须有TextView控件) * textViewResourceId 布局文件中的TextView的ID * objects 数据源 * */ ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, R.layout.spinner_item_02, R.id.tv, data);
3, 使用SimpleAdapter 填充数据
适用场景 图文混排,图片来自本地
数据源 List<Map<String,Object>>
步骤:
1, 控件, 得到控件并且初始化
2, 得到数据源
3, 得到适配器
4, 为控件设置适配器
/**
* context 上下文对象
* data 数据源
* resource 每个Item的布局页面
* from String[] 数据源中key的数组
* to int[] 布局页面中id的数组
*/
SimpleAdapter adapter = new SimpleAdapter(
this,
data,
R.layout.spinner_item,
new String[]{"icon","name","age"},
new int[]{R.id.icon,R.id.name,R.id.age});