Android Studio 学习记录-下拉框

Android Studio踩坑记录 - 2019最新 现在google对中国市场不是那么冷淡了,甚至有了中文developer网站 所以网上的那些Android Studio的教程,几乎全都过时了,现在把自己看这些垃圾博客的踩坑经历写在这 踩坑一:安装 0. 下载安装jdk(版本最好下jdk8的,9-11也行,网上有解决办法。12的自己回滚吧),并确保 java, javac 在powershell里不会报错 可选(因为现在没有正... 阅读详情

目录

下拉框控件 Spinner

 数组适配器ArrayAdapter

 简单适配器 SimpleAdapter


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

下拉框控件 Spinner

        Spinner是下拉框控件,它用于从一串列表中选择某项,其功能类似于单选按钮的组合。下拉列表的展示方式有两种,一种是在当前下拉框的正下方弹出列表框,此时要把spinnerMode属性设置为dropdown,下面是XML文件中采取下拉模式的Spinner标签例子:

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

        另一种是在页面中部弹出列表对话框,此时要把spinnerMode属性设置为dialog,下面是XML文件中采取对话框模式的Spinner标签例子:

<Spinner
    android:id="@+id/sp dialog"
    android:layout_width="match parent"
    android:layout_height="wrap_content"
    android:spinnerMode="dialog" />

        此外,在Java代码中,Spinner还可以调用下列4个方法。

  • setPrompt:设置标题文字。注意对话框模式才显示标题,下拉模式不显示标题。
  • setAdapter:设置列表项的数据适配器。
  • setSelection:设置当前选中哪项。注意该方法要在setAdapter方法后调用。
  • setOnItemSelectedListener:设置下拉列表的选择监听器,该监听器要实现接口OnItemSelectedListener。

        下面是初始化下拉框,并设置选择监听器的代码例子:

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

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

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

        接下来观察两种下拉列表的界面效果,运行测试App,一开始的下拉框如图所示。

        在下拉模式页面单击下拉框,六大行星的列表框在下拉框正下方展开,如图所示。点击某项后,列表框消失,同时下拉框中的文字变为刚选中的行星名称。 

        再打开对话框模式页面(SpinnerDialogActivity),单击下拉框会在页面中央弹出六大行星的列表对话框,如图所示。点击某项后,对话框消失,同时下拉框中的文字也变为刚选中的行星名称。 

 数组适配器ArrayAdapter

        上一小节在演示下拉框控件时,调用了setAdapter方法设置列表适配器。这个适配器好比一组数据的加工流水线,你丢给它一大把糖果(六大行星的原始数据),适配器先按顺序排列糖果(对应行星数组starArray),然后拿来制作好的包装盒(对应每个列表项的布局文件item_select.xml),把糖果往里面一塞,出来的便是一个个精美的糖果盒(界面上排布整齐的列表框)。这个流水线可以做得很复杂,也可以做得简单一些,最简单的流水线就是之前演示用到的数组适配器ArrayAdapter。

        ArrayAdapter主要用于每行列表只展示文本的情况,实现过程分成下列3个步骤:

1.编写列表项的XML文件,内部布局只有一个TextView标签,示例如下:

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:gravity="center" />

2.调用ArrayAdapter的构造方法,填入待展现的字符串数组,以及列表项的包装盒,即XML文件R.layout.item_select.构造方法的调用代码示例如下:

//声明一个下拉框的数组适配器
ArrayAdapter <String> starAdapter = new ArrayAdapter<String>(this,R.layout.item_select,                 starArray) ;

3.调用下拉框控件的setAdapter方法,传入步骤2得到的适配器实例,代码如下:

sp_dropdown.setAdapter(starAdapter);// 设置下拉框的数组适配器

        经过以上3个步骤,先由ArrayAdapter明确原料糖果的分拣过程与包装方式,再由下拉框调用setAdapter方法发出开工指令,适配器便会把一个个包装好的糖果盒输出到界面。

简单适配器 SimpleAdapter

        ArrayAdapter只能显示文本列表,显然不够美观,有时还想给列表加上图标,比如希望显示六大行星的天文影像。这时简单适配器SimpleAdapter就派上用场了,它允许在列表项中同时展示文本与图片。

        SimpleAdapter的实现过程略微复杂,因为它的原料需要更多信息。例如,原料不但有糖果,还有贺卡,这样就得把一大袋糖果和一大袋贺卡送进流水线,适配器每次拿一颗糖果和一张贺卡,把糖果与贺卡按规定塞进包装盒。对于SimpleAdapter的构造方法来说,第2个参数Map容器放的是原料糖果与贺卡,第3个参数放的是包装盒,第4个参数放的是糖果袋与贺卡袋的名称,第5个参数放的是包装盒里塞糖果的位置与塞贺卡的位置。

        下面是下拉框控件使用简单适配器的示例代码:

 // 初始化下拉框,演示简单适配器
    private void initSpinnerForSimpleAdapter() {
        // 声明一个映射对象的列表,用于保存行星的图标与名称配对信息
        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_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());
    }

        以上代码中,简单适配器使用的包装盒名为R.layout.item_simple,它的布局内容如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    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>

        运行测试App,一开始的下拉框如图所示,可见默认选项既有图标又有文字。

 

        然后单击下拉框,页面中央弹出六大行星的列表对话框,如图所示,可见列表框的各项也一齐展示了行星的图标及其名称。

 

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

相关推荐

安卓高级控件(下拉框、列表类视图、翻页类视图、碎片Fragment)

介绍安卓下拉框、列表类视图、翻页类视图、碎片Fragment的日常用法

weixin_42369301的博客 2895

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

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

weixin_62190821的博客 8535

Android Studio && GitHub 团队多人一起开发

曾几何时,花了两天的时间搞了合并项目,搞得乱七八糟der,但最终还是被我搞定了,too 乱 to 做笔记。过了几个月,也就是前几天,抱着从头开始的决心,再次尝试,然鹅并没有结果。今天,再一次重新开始,嘿,你猜怎么着,就简简单单弄好了???简直顺利的不敢相信,真是不知道之前咋弄der~所以今天一定得记个笔记 about Android Studio && GitHub 团队多人...

Think twice, code once. 3889

android 简单的下拉选择框实现(ListPopupWindow)

android 使用ListPopupWindow 简单的实现下拉选择框

weixin_42602900的博客 4295

Android Studio设备连接故障排查:从ADB原理到实战解决Loading Devices问题

Android Debug Bridge(ADB)是连接开发环境与Android设备的核心调试工具,其工作原理基于客户端-服务器架构,通过USB或网络协议实现命令传输与数据交换。在Android开发中,ADB的稳定连接直接影响应用部署、日志抓取和实时调试的效率。然而,由于驱动兼容性、端口占用、系统服务冲突或环境变量配置不当,常导致Android Studio的Device Manager持续显示“Loading Devices...”状态,无法识别已连接的设备或模拟器。本文聚焦ADB连接故障的通用排查流程,

weixin_33908217的博客 421

Android使用 Spinner控件实现下拉框功能

Spinner是android的一种控件,用它我们可以实现下拉框。下面通过实例代码给大家介绍Android使用 Spinner控件实现下拉框功能,感兴趣的朋友一起看看吧

新版Android studio 打开旧版Android studio项目

本文记录了Android Studio新旧版本兼容问题的解决方法(旧版2020.4.1.1到新版2025.1.3)

xiaohei52的博客 2371

ENVI 5.3与IDL 8.5安装指南:从下载到激活的完整流程

本文提供了一份详细的ENVI 5.3与IDL 8.5安装教程,涵盖从获取安装包、运行主程序、安装许可证到关键文件替换的完整流程。指南重点解决了激活过程中的常见问题,并分享了个人实践经验,旨在帮助用户,特别是遥感图像处理初学者,一次性顺利完成软件部署,为后续的科研与开发工作奠定基础。

weixin_29213827的博客 546

Android Studio 日志系统详解

/ 自动获取类名作为tag修改日志显示格式添加自定义字段保存日志过滤器。

百锦再的博客 2万+

【Java微服务-医疗管理项目】(附源码+资料+教程)

尚医疗是专门为各大医院、门诊提供的一款医疗管理平台。 系统包含:系统管理、药品进销存管理、看病就诊、收费管理、检查管理、数据统计等核心模块。 通过尚医疗系统可以快速、方便的管理病人从挂号到门诊结束所涉及到的全套流程。也可以清晰明了的体现出药品进货、出售的所有记录。.........

m0_72882572的博客 2203

Open3D 体素下采样【2026最新版】

体素滤波,博客长期更新,本文最近更新时间为:2026年4月11日。

点云侠的博客 37万+

Android Studio 学习记录-收发应用广播

本文介绍应用广播的几种收发形式,包括如何收发标准广播、如何收发有序广播、如何收发静态广播、如何监听定时管理器发出的系统闹钟广播等。

demon_dog的博客 3155

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

蚂蚁小兵 2466

【Android Studio学习】11.menu选项菜单,spinner下拉框,以及ListView的合作

安卓作业实现以下效果:利用选项菜单或者spinner实现这样一个分类效果,感觉还挺实用的。记录一下制作过程。 listview的布置 首先在mainactivity的xml文件里添加一个listview控件, 如果使用spinner还可以添加一个spinner控件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

m0_51692337的博客 2835

LPDDR6 Efficiency Mode 技术探讨

LPDDR6 Efficiency Mode 技术探讨

zilan23的博客 1160

PCL 中实现平面模型分割【2026最新版】

RANSAC分割平面。博客长期更新,最近一次更新时间为:2026年5月4日。

点云侠的博客 38万+

android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法

Android Studio 运行按钮灰色的完美解决方法 今天新建项目的时候突然发现编译后运行按钮为灰色。解决方案:第一步:点击图中的Add Configuration,出来如下界面第二步:点+号,并选择Android App选项 出来下图所示界面第三步:在Module 中下拉框中选择app如果在Module 下拉框没有app这个选项点击搜索框,输入sync,从搜索结果中选择如下项:点击运行...

weixin_29103603的博客 9058

数据治理——详解元数据、资源目录、主数据、数据元、元数据管理、主数据管理【附全文阅读】

摘要:数据中心建设的核心是元数据管理,即"描述数据的数据",包含内容、质量、所有者等关键信息。元数据在数据仓库中记录数据源、转换规则等,是管理基础;主数据管理则确保核心业务数据的准确一致。二者共同构建高效的数据资源目录,为数据服务提供支撑。(99字)

cdfunlove的博客 101

Android Studio 学习笔记1.1 创建自己的第一个安卓项目并且打包APK

   自从上一次安装完安卓开发工具Android Studio后抽时间看视屏尝试编写自己的第一个安卓项目约两周的时间 每天下班后会花上1~2小时的时间去学习 目前的成果如下:次元宅的我.apk 嘛 总而言之感觉除了各种各样的配置和不熟悉ide的使用这方面 给我造成很多麻烦外 暂时还没遇到什么特别棘手的问题 之前还在学校的时候也学过Java所以对于语言这方面不算太困难 对了...

279

手把手教你学Simulink--基于多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、燃料电池子系统、锂电池子系统、能量管理、电机驱动等模块,通过协同控制优化能源分配。详细说明了从模型创建到各子系统设置的7个步骤,并提供了MATLAB代码示例。该仿真可评估不同工况下的系统响应速度、能量利用效率和电池寿命等性能指标,为混合动力汽车的能量管理策略设计和优化提供参考。

MHD0815的博客 239

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【Android 性能分析】第三天:Android Studio Profiler

Android Studio Profiler 是性能分析的核心工具,提供 CPU、内存、GPU 等一站式分析功能。启动方式包括底部导航栏直达、菜单栏唤起和多进程定向启动。面板采用五分区布局:顶部控制区(进程切换/数据记录)、左侧工具区(6大专项分析)、中间时间轴(实时可视化)、底部详情区(深度分析)和右侧配置区(参数调整)。使用前需完成设备调试权限开启、项目切换为 Debug 构建类型等基础配置。掌握这些核心功能可帮助开发者高效定位性能问题,为后续专项优化打下基础。

u012739527的博客 2564

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android studio 用法记录 更新中....

1、项目管理 svn设置: android studio从svn迁出项目:vcs--->checkout from versioncontrol--->Subversion,然后点击加号就可以添加地址了。 2、android studio常用设置: Android Studio 要求的AndroidSDK的版本不低于Version22,同时还需要BuildTools的版本不低于Version

dalancon的专栏 1万+

VC中sqlite的使用

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Ubuntu 22.04搭建高效Android开发环境:从JDK到Android Studio全流程指南

Android开发环境搭建是移动应用开发的基础环节,其核心在于构建工具链与系统环境的协同。在Linux系统上,通过OpenJDK提供Java运行时支持,结合Android SDK命令行工具实现灵活的组件管理。这一技术方案的价值在于为开发者提供稳定、可复现且高度自动化的开发基础,尤其适合持续集成与云原生场景。本文聚焦于Ubuntu 22.04平台,详细解析如何配置包括KVM虚拟化加速、Gradle构建优化在内的完整工具链,并针对模拟器性能调优与中文输入法集成等实际需求提供解决方案,帮助开发者快速构建高效的An

weixin_34242331的博客 365

Android studio中常用快捷键

记录一下在Android studio中用到的快捷键,随时更新。  ctrl+alt+v 自动添加返回值(条用一个方法或new一个对象时使用)  alt+insert 继承一个类或实现一个接口时 自动实现其方法  ctrl+alt+t  选中代码,按ctrl+alt+t添加try catch块或其他一些包含的块,如下图所示:        如果你已经习惯了eclipse的快捷键,也

一路前行 833

Android studio Log日志找不到

摘要(Abstract) 必备技能,使用日志工具 LogCat,并尝试解决真机调试没有日志的问题。 日志工具(LogCat) 日志在任何项目的开发过程中都会起到非常重要的作用,在 Android 项目中如果你想要查看日志则必须要使用 LogCat 工具。 在 android Studio 最下方的 Status Bar 中找到 6:Android,点击她。如下图

Zzq_Big_Cow的博客 6516
上一篇: Android Studio 学习记录-存储卡
平凡的学习者
博客等级 码龄11年 29粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值