IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> [安卓开发] 下拉框Spinner与适配器ArrayAdapter/SimpleAdapter的使用 -> 正文阅读

[移动开发][安卓开发] 下拉框Spinner与适配器ArrayAdapter/SimpleAdapter的使用

目录

简单介绍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 {

	@Override
	protected 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" >

    <Spinner
        android: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的样式,第三个参数为数据源。

效果图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6JCM5aWI5Yqg5rK55Yqq5Yqb,size_20,color_FFFFFF,t_70,g_se,x_16

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

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

java代码:

public class SpinnerIconActivity extends AppCompatActivity {

	@Override
	protected 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" >

    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center" />
    
    <TextView
        android: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值一一对应。

效果图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6JCM5aWI5Yqg5rK55Yqq5Yqb,size_20,color_FFFFFF,t_70,g_se,x_16

资料引用:

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

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

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-01 20:43:51  更:2022-02-01 20:44:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:33:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码