目录

简单介绍Spinner和Adapter

ArrayAdapter实现以对话框形式展示下拉框(纯文字)

Simple实现以对话框形式展示下拉框(图片加文字)


简单介绍Spinner和Adapter

Spinner是下拉框,用于从一串列表中选择某项,功能类似于单选按钮的组合。下拉列表的展示方式有 两种,一种是在当前下拉框的正下方展示列表,此时把spinnerMode属性设置为dropdown;另一种是在页面 中部以对话框形式展示列表,此时把spinnerMode属性设置为dialog。

适配器Adapter的作用主要是用来给诸如(Spinner、ListView、GridView)来填充数据。常用的适配器有ArrayAdapter, SimpleAdapter和BaseAdapter。

作为初学者,今天先通过学习下拉框Spinner了解ArrayAdapter和SimpleAdapter的使用。

ArrayAdapter实现以对话框形式展示下拉框(纯文字)

java代码

public class SpinnerDialogActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_spinner_dialog);//声明一个下拉列表的数组适配器ArrayAdapter<String> starAdapter = new ArrayAdapter<String>(this,R.layout.item_select, starArray);//设置数组适配器的布局样式starAdapter.setDropDownViewResource(R.layout.item_dropdown);//从布局文件中获取名叫sp_dialog的下拉框Spinner sp = (Spinner) findViewById(R.id.sp_dialog);//设置提示符sp.setPrompt("请选择行星");//设置下拉框的数组适配器sp.setAdapter(starAdapter);//设置下拉框默认显示第一项sp.setSelection(0);//设置选择监听器sp.setOnItemSelectedListener(new MySelectedListener());}private String[] starArray = {"水星", "金星", "地球", "火星", "木星", "土星"};class MySelectedListener implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {Toast.makeText(SpinnerDialogActivity.this, "您选择的是"+starArray[arg2], Toast.LENGTH_LONG).show();}public void onNothingSelected(AdapterView<?> arg0) {}}}

布局样式:

<!--item_select.xml 选择窗口字体样式-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:singleLine="true"android:gravity="center"android:textSize="17sp"android:textColor="#0000ff" />
<!--item_dropdown.xml 下拉窗口字体样式-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/tv_name"android:layout_width="match_parent"android:layout_height="40dp"android:singleLine="true"android:gravity="center"android:textSize="17sp"android:textColor="#ff0000" />
<!--activity_spinner_dialog.xml-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="20dp" ><Spinnerandroid:id="@+id/sp_dialog"android:layout_width="match_parent"android:layout_height="wrap_content"android:spinnerMode="dialog" />"</LinearLayout>

声明适配器ArrayAdapter时使用了三个参数:

ArrayAdapter<String> starAdapter = new ArrayAdapter<String>(this,R.layout.item_select, starArray);

第一个参数指上下文对象,第二个参数指被选中的item的样式,第三个参数为数据源。

效果图:

Simple实现以对话框形式展示下拉框(图片加文字)

有时我们还想给列表加上图标,这时就可以使用SimpleAdapter,它允许在列表项中展示多个控件,包括文本与图片。SimpleAdapter的使用方式与ArrayAdapter基本类似,但有不同。下面贴上代码。

java代码:

public class SpinnerIconActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_spinner_icon);//声明一个映射对象的队列,用于保存行星的图标与名称配对信息List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  //iconArray是行星的图标数组,starArray是行星的名称数组for (int i = 0; i < iconArray.length; i++) {Map<String, Object> item = new HashMap<String, Object>();  item.put("icon", iconArray[i]);  item.put("name", starArray[i]);//把一个行星图标与名称的配对映射添加到队列当中list.add(item);  }//声明一个下拉列表的简单适配器,其中制定了图案与文本两组数据SimpleAdapter starAdapter = new SimpleAdapter(this, list,  R.layout.item_select, new String[] { "icon", "name" },  new int[] {R.id.iv_icon, R.id.tv_name});//设置简单适配器的布局样式starAdapter.setDropDownViewResource(R.layout.item_simple);//从布局文件中获取名叫sp_icon的下拉框Spinner sp = (Spinner) findViewById(R.id.sp_icon);//设置下拉框的标题sp.setPrompt("请选择行星");//设置下拉框的简单适配器sp.setAdapter(starAdapter);//设置下拉框默认显示第一项sp.setSelection(0);//设置选择监听器sp.setOnItemSelectedListener(new MySelectedListener());}private int[] iconArray = {R.drawable.shuixing, R.drawable.jinxing, R.drawable.diqiu, R.drawable.huoxing, R.drawable.muxing, R.drawable.tuxing};private String[] starArray = {"水星", "金星", "地球", "火星", "木星", "土星"};class MySelectedListener implements OnItemSelectedListener {public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {Toast.makeText(SpinnerIconActivity.this, "您选择的是"+starArray[arg2], Toast.LENGTH_LONG).show();}public void onNothingSelected(AdapterView<?> arg0) {}}}

布局样式:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><ImageViewandroid:id="@+id/iv_icon"android:layout_width="0dp"android:layout_height="50dp"android:layout_weight="1"android:gravity="center" /><TextViewandroid:id="@+id/tv_name"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="3"android:gravity="center"android:textSize="17sp"android:textColor="#ff0000" /></LinearLayout>

声明SimpleAdapter时的五个参数:

SimpleAdapter starAdapter = new SimpleAdapter(this, list,R.layout.item_select, new String[] { "icon", "name" }, new int[] {R.id.iv_icon, R.id.tv_name});

第一个参数:上下文对象;

第二个参数:数据源;

第三个参数:选中的item的样式;

第四个参数:new String[]数组,数组中每一项要与第二个参数中存入的集合的key值一一对应;

第五个参数:new int[],数组中的每一项要与第二个参数中存入集合的的values值一一对应。

效果图:

资料引用:

android中Adapter适配器的讲解 - 会飞的一只狼 - 博客园 (cnblogs.com)

《Android Studio开发实战:从零基础到App上线》作者:欧阳燊

[安卓开发] 下拉框Spinner与适配器ArrayAdapter/SimpleAdapter的使用相关推荐

  1. 下拉框Spinner

    xml: <!-- 下拉框 --> <Spinner  android:layout_width="match_parent" android:layout_he ...

  2. Hello,Views(六)下拉框Spinner(附源码)

    前言 本文根据官方教程适当翻译而来.(源码下载) 1.新建工程HelloSpinner 2.在main.xml里面添加一个spinner,设置Android:promt属性,这是一个提示属性,同时为默 ...

  3. portal开发下拉框“日期框”查询要怎么配置

    下面的这些是我今天的成果! 总的来说是一步一步摸索出来的!还是等感谢超哥的耐心指导,犯了一些错误! 1.比如在wd配置文件中中写id="check_it_two",在java中写成 ...

  4. Android 之 下拉框(Spinner)的使用

    下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考  一.使用数组作为 ...

  5. android下拉框 Spinner 获取选中,设置选中

    设置默认选中: public static int ugid = 1; public void setSpinnerItemSelectedByValue(Spinner spinner,String ...

  6. 《Android Studio开发实战》学习(六)- 下拉框

    <Android Studio开发实战>学习(六)- 下拉框 背景 下拉框Spinner的使用 数组适配器ArrayAdapter的使用 简单适配器SimpleAdapter的使用 布局文 ...

  7. Spinner 下拉框

    下拉框可用自定义的列表做或查询出来的数据做! 下拉框用自定义的列表显示: 第一种方式:在布局文件里设置 1.在res/values/strings.xml层里的里写: <string name= ...

  8. Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框

    Acitivity(页面)之间的跳转 Acitivity(页面)之间的跳转需要使用到 Intent(意图) Intent intent = new Intent(MainActivity.this(从 ...

  9. Android 中 Spinner下拉框使用

    文章目录 先用起来 方法和属性 样式 增加分割线 选中和下拉样式 弹出框样式 使用自定义的BaseAdapter 先用起来 效果图 布局页面 activity_test <?xml versio ...

最新文章

  1. CTF-Web-常用伪协议用法:
  2. 编译原理之正则表达式
  3. 将COM+ Events进行到底[转]
  4. 【转】ABP源码分析四十四:ZERO的配置
  5. 可以用在任何人身上:百战百胜人生10大成功秘诀
  6. 字节跳动回应抖音上市;苹果公司:全球多个国家的 App 价格将上涨;GDB 10.1 发布|极客头条
  7. android 连接ble键盘,如何在Android上以编程方式配对和连接HID蓝牙设备(蓝牙键盘)...
  8. 阿里开源mysql监控_Alibaba-技术专区-开源项目之Druid数据库监控平台
  9. paip.提升性能---- 网站并发数的总结.txt
  10. 一个计算机系统配置有3台打印机,我们是局域网3站点 3台电脑共享一个打印机 3台电脑相同的系统 打印参数也设置完全一样 但是打印出来的效果却不同 请问什么原因?需要怎么设置?...
  11. postgresql批量插入数据脚本_asp.net实现Postgresql快速写入/读取大量数据实例
  12. 手机与电脑大文件无线传输方案
  13. 使用 HTML、CSS 和 JS 创建在线音乐播放器(含免费完整源码)
  14. 一本通1348:城市公交网建设问题
  15. AMD将推出7纳米GPU Vega,专为深度学习和机器学习打造
  16. 测试路由和设备连接速度的软件,如何简单,快速地在家中测试无线路由器的速度和性能?...
  17. 江苏师范大学计算机学院投档线,江苏师范大学科文学院2018年各省及各专业录取分数线及最低录投档线【理科 文科】...
  18. 数据结构 笔记:图的遍历(DFS)
  19. 第一章 关于交易的思考 | 期权, 皇冠上的明珠?
  20. 【最优化方法】【矩阵分析】标量、向量、矩阵之间的求导关系

热门文章

  1. Maven循环依赖问题:The projects in the reactor contain a cyclic reference:
  2. iOS高德地图 多个大头针显示图片 点击效果
  3. 手机服务器共享信息,手机云共享服务器设置
  4. 电话发明背后的浪漫爱情故事
  5. 工业机器人的组成部分
  6. 以太网标准与网线标准常识(copy)
  7. mPEG2000-DMG,160743-62-4,DMG-PEG2000,mPEG2000- 二肉豆蔻酰基-外消旋-甘油
  8. Java基础-day06-抽象类和接口
  9. if在c语言程序中的作用,c语言程序设计,if(flag)中,括号内只有一个flag,表示
  10. 关于c语言中的转义字符