7、android 高级控件(1)(下拉列表)

安卓高级控件(下拉框、列表类视图、翻页类视图、碎片Fragment) 介绍安卓下拉框、列表类视图、翻页类视图、碎片Fragment的日常用法 阅读详情

下拉框的用法以及适配器的基本概念,结合对下拉框Spinner的使用说明分别阐述数组适配器ArrayAdapter、简单适配器SimpleAdapter的具体用法与展示效果。

 1、下拉框Spinner

1、Spinner用于从一串列表中选择某项,功能类似于单选按钮的组合。

2、XML文件中的spinnerMode属性有两种取值:

dropdown:下拉列表形式

dialog:对话框形式

3、在Java代码中可调用下列4个方法。

setPrompt:设置标题文字。

setAdapter:设置下拉列表的适配器。

setSelection:设置当前选中哪项。

setOnItemSelectedListener:设置下拉列表的选择监听器

 2、数组适配器

下拉框调用setAdapter方法设置列表适配器,最简单的适配器就是数组适配器。

运用数组适配器分成下列步骤:

(1)编写列表项的XML文件,内部布局只有一个TextView标签

(2)调用ArrayAdapter的构造方法,填入待展现的字符串数组,以及列表项的XML文件(R.layout.item_select)

new ArrayAdapter(context, resource, textViewResourceId, objects);

context:上下文,写this就好了。

resource: 子布局item

textViewResourceId:对布局中哪个textView进行内容适配的控件的id。

objects: 数据源datas
 

(3)调用下拉框控件的setAdapter方法,传入第二步得到的适配器实例

package com.example.chapter05;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class SpinnerDropdownActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner_dropdown);
        initSpinnerForDropdown(); // 初始化下拉模式的列表框
    }

    // 初始化下拉模式的列表框
    private void initSpinnerForDropdown() {
        // 声明一个下拉列表的数组适配器
        ArrayAdapter<String> starAdapter = new ArrayAdapter<String>(this,
                R.layout.item_select, starArray);
        // 从布局文件中获取名叫sp_dropdown的下拉框
        Spinner sp_dropdown = findViewById(R.id.sp_dropdown);
        // 设置下拉框的标题。对话框模式才显示标题,下拉模式不显示标题
        sp_dropdown.setPrompt("请选择行星");
        sp_dropdown.setAdapter(starAdapter); // 设置下拉框的数组适配器
        sp_dropdown.setSelection(0); // 设置下拉框默认显示第一项
        // 给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法
        sp_dropdown.setOnItemSelectedListener(new MySelectedListener());
    }

    // 定义下拉列表需要显示的文本数组
    private String[] starArray = {"水星", "金星", "地球", "火星", "木星", "土星"};
    // 定义一个选择监听器,它实现了接口OnItemSelectedListener
    class MySelectedListener implements OnItemSelectedListener {
        // 选择事件的处理方法,其中arg2代表选择项的序号
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            Toast.makeText(SpinnerDropdownActivity.this, "您选择的是" + starArray[arg2],
                    Toast.LENGTH_LONG).show();
        }

        // 未选择时的处理方法,通常无需关注
        public void onNothingSelected(AdapterView<?> arg0) {}
    }

}
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_name"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:singleLine="true"
    android:gravity="center"
    android:textSize="17sp"
    android:textColor="#0000ff" />
<?xml version="1.0" encoding="utf-8"?>
<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="5dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="下拉模式的列表框"
        android:textColor="@color/black"
        android:textSize="17sp"/>

    <Spinner
        android:id="@+id/sp_dropdown"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"/>

</LinearLayout>

 

 

 8.1.3  简单适配器SimpleAdapter

ArrayAdapter只能显示文本列表,SimpleAdapter允许在列表项中同时展示文本与图片。

使用简单适配器需要同时指定文本数组与图片数组,下面是SimpleAdapter的使用代码例子:     // 声明一个下拉列表的简单适配器,其中指定了图标与文本两组数据    

SimpleAdapter starAdapter = new SimpleAdapter(this, list,            

R.layout.item_simple, new String[]{"icon", "name"},            

new int[]{R.id.iv_icon, R.id.tv_name});    

sp.setAdapter(starAdapter); // 设置下拉框的简单适配器

package com.example.chapter05;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SpinnerIconActivity extends AppCompatActivity {
    // 定义下拉列表需要显示的行星图标数组
    private Object[] iconArray = {R.drawable.icon_point_c, R.drawable.list_selector,
            R.drawable.icon_point_c, R.drawable.icon_point_c, R.drawable.icon_point_c,
            R.drawable.shape_oval_red};// 定义下拉列表需要显示的行星名称数组
    private String[] starArray = {"水星", "金星", "地球", "火星", "木星", "土星"};

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner_icon);
        initSpinnerForSimpleAdapter(); // 初始化下拉框,演示简单适配器
    }

    private void initSpinnerForSimpleAdapter(){
        List<Map<String,Object>> list=new ArrayList<>();
        for(int i=0;i<iconArray.length;i++){
            Map<String,Object>item=new HashMap<>();
            item.put("icon",iconArray[i]);
            item.put("name",starArray[i]);
            list.add(item);
        }
        SimpleAdapter starAdapter = new SimpleAdapter(this, list,
                R.layout.item_simple, new String[]{"icon", "name"},
                new int[]{R.id.iv_icon, R.id.tv_name});
        starAdapter.setDropDownViewResource(R.layout.item_simple);
        // 从布局文件中获取名叫sp_icon的下拉框
        Spinner sp_icon = findViewById(R.id.sp_icon);
        sp_icon.setPrompt("请选择行星"); // 设置下拉框的标题
        sp_icon.setAdapter(starAdapter); // 设置下拉框的简单适配器
        sp_icon.setSelection(0); // 设置下拉框默认显示第一项
        // 给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法
        sp_icon.setOnItemSelectedListener(new MySelectedListener());
    }
    // 定义一个选择监听器,它实现了接口OnItemSelectedListener
    class MySelectedListener implements AdapterView.OnItemSelectedListener {
        // 选择事件的处理方法,其中arg2代表选择项的序号
        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 -->
    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1" />

    <!-- 这是展示行星名称的TextView -->
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:gravity="center"
        android:textColor="#ff0000"
        android:textSize="17sp" />
</LinearLayout>
<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="5dp" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="行星的简单适配器"
        android:textColor="@color/black"
        android:textSize="17sp" />

    <Spinner
        android:id="@+id/sp_icon"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dialog" />"

</LinearLayout>

 

 

Android 简单的下拉选择框实现 阅读详情

相关推荐

Android 下拉菜单 下拉抽屉-自定义控件

下拉抽屉 下拉菜单 自定义控件

qq_37630270的博客 3009

Android Studio 学习记录-下拉框

本节介绍下拉框的用法以及适配器的基本概念,结合对下拉框Spinner的使用说明分别阐述数组适配器ArrayAdapter、简单适配器SimpleAdapter的具体用法与展示效果。

demon_dog的博客 5454

GEOPHYSICS 投稿避坑指南:从格式规范到双盲评审的实战解析

本文详细解析了GEOPHYSICS期刊投稿的全流程避坑指南,从格式规范、数据声明到双盲评审的实战策略。特别强调了数学公式排版、图表制作标准以及投稿系统的隐藏关卡,帮助作者避免常见错误,提升投稿成功率。

weixin_30606461的博客 236

Android——基本控件之下拉列表:Spinner(九)

Spinner组件功能介绍

毛栗子201105的博客 5773

混合编程实战:C#集成C++ PCL点云处理库,打造跨语言动态链接库

本文详细介绍了C#与C++混合编程实战,重点讲解如何通过动态链接库(DLL)集成C++ PCL点云处理库,实现跨语言协作。内容涵盖环境配置、PCL功能封装、C#调用DLL的完整方案,以及性能优化和错误处理等进阶技巧,帮助开发者高效处理大规模点云数据,提升工业软件开发效率。

weixin_42620913的博客 382

深度解读扫地机器人的导航原理

科技改变生活,不可否认科技的进步的确为我们的生活带来许多便捷,以智能家电为例,智能电饭煲、智能洗碗机、智能扫地机等产品已逐渐成为家庭的一分子,其中以扫地机表现最为抢眼。能做到智能规划清扫,收割了不少家庭主妇及科技爱好者的芳心。但扫地机并非一开始就这么智能,最初的扫地机只能做到随机式清扫,会频繁出现碰撞现象。 近年来,通过业界的不断努力,目前,扫地机器人已告别乱碰乱撞现象,能做到自主路径...

qq_38403231的博客 6506

6 Android高级控件

6 Android高级控件

DaB210的博客 1090

Docker Desktop重装避坑:从卸载到安装的完整流程(Win10/Win11适用)

本文详细介绍了在Windows 10/11系统上彻底卸载和重新安装Docker Desktop的完整流程,包括深度清理残留文件、注册表项和虚拟磁盘,以及安装前的环境准备和安装后的验证步骤,帮助用户避免常见问题并优化Docker环境配置。

julia4scientist的博客 1107

【Android】Android高级控件

文章目录1.下拉列表Spinner1.数组适配器ArrayAdapter2.简单适配器SimpleAdapter3.基本适配器BaseAdapter2.列表视图ListView3.网格视图GridView4.翻页视图ViewPager5.翻页标签栏pagerTabStrip6.ViewPager实现引导页7.碎片Fragment1.Fragment静态注册2.Fragment生命周期3.Fragment动态注册 1.下拉列表Spinner 1.数组适配器ArrayAdapter 最简单的适配器,只展示一行文

LeGuan_Ha的博客 1524

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 327

YOLOv11 改进 - 注意力机制 | LS-YOLO MSFE 多尺度特征提取模块:并行分支结构增强多尺度感知,优化遥感与小目标检测

本文介绍了一种用于滑坡检测的模型LS-YOLO及其在YOLOv11中的结合应用。LS-YOLO首先构建多尺度滑坡数据集MSLD,为模型训练提供丰富数据。设计了基于高效通道注意力、平均池化和空间可分离卷积的多尺度特征提取模块MSFE,充分提取滑坡特征信息。在解耦头中采用膨胀卷积增加模型感受野。我们将MSFE模块集成进YOLOv11,替换部分原有模块。实验表明,改进后的YOLOv11在数据集中表现出色 。

魔改工程师的博客 871

Android速成day06-高级控件

本文介绍了安卓开发中常用的UI组件和功能,包括下拉框(Spinner)、适配器(Adapter)、列表视图(ListView)、翻页视图(ViewPager)和Fragment的使用方法。通过示例讲解如何实现数据绑定、动态列表展示、页面滑动切换以及模块化界面设计,帮助开发者快速掌握这些核心技术的应用。适合安卓初学者学习和参考。

1179

【即插即用模块】Mamba篇 | CVPR 2025 | MaIR:新型Mamba扫描方式+通道混洗注意力,全任务涨点!

MaIR是一种新型图像恢复模型,通过嵌套S形扫描策略(NSS)和序列混洗注意力(SSA)改进传统Mamba方法。NSS采用条纹区域划分和S形扫描路径,既保留图像局部性又维持空间连续性;SSA通过通道洗牌和门控机制增强特征聚合。该模块创新性地融合多路径选择性扫描、深度卷积和注意力机制,在保持O(N)计算复杂度的同时,显著提升超分辨率和去噪等任务的性能表现(PSNR提升0.2-0.5dB)。代码实现包含特征洗牌、组卷积等关键操作,适用于高分辨率视觉任务,可作为即插即用组件替代传统自注意力模块。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1168

Android高级控件

Android高级控件,是指具有更高级功能的控件,这类控件丰富了界面的多样性,强化了程序的功能,更好地实现了Android应用程序,比如,进度条,自动完成文本,Spinner等等。 自动完成文本框。 在Android开发中提供了两种智能输入框——AutoCompleteTextView和MultiAutoCompleteTextView。它们的功能类似于百度在搜索栏输入信息的时候,

Ou19981024的博客 491

MIKE 21 教程 2.2 Domain, Time, Module Selection设置教学

上一节讲解了水动力模型的基本概念与文件创建MIKE 21 教程 2.1水动力模型介绍​本节讲解水动力模型前三个模块的设置此模块需导入之前绘制好的网格文件,导入后可预览网格文件点击上方的Domain Specification可查看网格的数据统计与高程属性,快速检查网格文件有无明显错误 点击上方的Boundary names,可查看之前定义的出入水边界。在网格文件中,我们对边界只能以数字属性进行区分,这里可以对数字属性进行命名,在name中直接修改即可。本实例中我们的2代表入水边界,3代表出水边界。因为博主日

Hello Word 3867

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

高级控件01 自动提示文本框与下拉列表

高级控件与低级控件区别 在于是否使用适配器     注:MultiAutoCompleteTextView(多次提示)--作业       //设置多次提示时,设置分隔符方法       Tokenizer t = new MultiAutoCompleteTextView.CommaTokenizer();       mactv_main.setTokenizer(t);   适配器...

qq_41097820的博客 192

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android的高级控件(自动提示文本框与下拉列表)

一、高级控件与常用控件的区别:是否使用适配器 二、适配器 1、种类 ①、数组适配器 ArrayAdapter       new ArrayAdapter&lt;String&gt;(this,R.layout.actv_style, names); ②、简单适配器 SimpleAdapter       也叫“并不简单的简单适配器” ③、自定义适配器 2、作用: 桥梁、展示 三、高级...

pssalways的博客 695

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Androin高级控件01 自动提示文本框与下拉列表

1、高级控件展示 2、高级控件与低级控件区别 是否使用适配器 适配器种类和作用 3.1 种类 数组适配器 ArrayAdapter new ArrayAdapter(this,R.layout.actv_style, names); 3.2 简单适配器 SimpleAdapter 也叫“并不简单的简单适配器” 3.3 作用 桥梁、 展示 高级控件使用步骤 3.1 获取数据 3.2...

KidShmily的博客 419

Android高级控件之AutoCompleteTextView,MultiAutopleteTextView,Spinner,ListView,ExpandableListView

Android中的高级控件要比普通控件的实现效果要好很多,有些样式是可以自动生成的,不需要再去写过多复杂化的代码,虽然说高级并不是说就很难学习,只要你把它琢磨透其实是很简单的,应为许多控件的使用差不多都是一样的思路,只要你搞懂了思路,你就会了。下面来了解下吧。 1.AutoCompleteTextView(自动完成文本框)    自动完成文本框也就是自动补全,我们一般在搜索中会遇见只要

phy1997的博客 639

深入理解Android UI设计:从布局管理器到常用控件的全面解析

在学习Android开发的过程中,通过大量的实践和代码编写,我逐渐掌握了布局管理器和UI控件的使用方法。以下是对《安卓3-7章》内容的总结与深化,旨在通过详实的例证、深入的剖析以及周密的论述,提升文章的广度和深度。综上所述,本文旨在为Android开发者提供一份全面且实用的参考指南,帮助他们更好地理解和应用Android开发的相关知识和技术,同时鼓励他们不断学习和改进,成为优秀的Android开发者。通过持续的学习、实践和改进,我们可以不断提升自己的开发水平,解决遇到的挑战,为用户提供更优质的应用体验。

evolutionnn的博客 1280

Android学习7--高级界面组件

1、自动完成文本框(AutoCompleteTextView) AutoCompleteTextView从EditText派生出来,实际上也是一个文本编辑框,但它比普通编辑框多一个功能:当用户输入一个字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。 使用AutoCompleteTextV

lixj517990544的专栏 5226

Spinner-----android 高级控件 (下拉列表)

因为是最简单的实现,所以没有很多的解释,直接放代码 一、实现效果      二、activity_main.XML文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_

qq_37999820的博客 312

Android学习(六)—— Android高级控件

Android高级控件 1、ProgressBar 进度条,在运行耗时操作时来显示,可以提高软件的友好型。 常用属性 android:max:进度条的最大值 android:progress:进度条已完成进度值 android:progressDrawable:设置轨道对应的Drawable对象 android:indeterminate:如果设置成true,则进度条不精确显示进...

weixin_30344995的博客 313

Android开发应用--高级UI界面设计

(要求:界面中包含两个ImageButton(图片按钮)和一个ImageSwitcher(图片切换器),图片按钮上的图片分别为向左的箭头和向右的箭头,单击按钮时,按钮图片会随着状态发生变化,同时图片也随之变化。(要求:页面包含两个按钮:按钮一和按钮二。熟悉了Android高级界面控件应用方法,掌握了Android应用程序界面的图片控件和列表控件的设计与应用方法,掌握了Android应用程序程序界面对话框和菜单的设计与操作方法。(3)掌握Android应用程序界面的图片控件和列表控件的设计与应用方法。

zdsxc_的博客 523

安卓高级控件实战:从下拉框到碎片Fragment的全面解析

本文全面解析了安卓开发中从基础到高级的核心UI控件。详细探讨了下拉框Spinner的两种模式与适配器进阶应用,剖析了ListView的常见布局与点击问题,并介绍了GridView的网格布局与拉伸模式。重点讲解了如何利用ViewPager与Fragment构建流畅的引导页,以及现代开发中Fragment与ViewPager2的组合实践,帮助开发者掌握模块化、高性能的界面构建技巧。

weixin_29268331的博客 183
上一篇: 3、javaScript语法基础(变量)
下一篇: 3、javascript语言基础(数据类型underfine和symbol)
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郭同学忒骚了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值