Android Studio 学习记录-下拉框

这篇具有很好参考价值的文章主要介绍了Android Studio 学习记录-下拉框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

下拉框控件 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,一开始的下拉框如图所示。

android 下拉框控件,Android Studio,android studio

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

android 下拉框控件,Android Studio,android studio

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

android 下拉框控件,Android Studio,android studio

 数组适配器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 下拉框控件,Android Studio,android studio

 文章来源地址https://www.toymoban.com/news/detail-627961.html

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

android 下拉框控件,Android Studio,android studio

 

到了这里,关于Android Studio 学习记录-下拉框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Android studio] 第6节 Button控件

    目录 一、Button是什么? 二、使用步骤 1.demo Button控件具有许多属性可以用来自定义其外观和行为。以下是Button控件常用的参数属性及其详解: android:id :设置Button的唯一标识符。在代码中可以使用这个ID引用Button。 android:layout_width :指定Button的宽度,可以使用以下值: \\\"wra

    2024年02月08日
    浏览(38)
  • Android Studio小白踩坑记录

    写在前面,本人纯纯安卓小白,自己摸索着用Android Studio,遇到了不少问题,在这里记录一下 Android Studio推荐版本问题 我其实不太建议小白直接上来用最新的Android Studio版本,高版本的是kotlin语言编写的。我这里用的是2021版本的,小白用java语言较好。 gradle安装太慢 这个是安

    2024年02月22日
    浏览(36)
  • Android Studio Flamingo编译项目问题记录

    系统版本:macOS 13.4 Android Studio Flamingo | 2022.2.1 Patch 2 下载地址: Download Android Studio App Tools - Android Developers Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today. https://developer.android.google.cn/studio 所需插件版本:3.2-8.0,g

    2024年02月16日
    浏览(49)
  • Android Studio - 新版 logcat 过滤使用记录

    由于 as 在每次升级都有很多问题,因此去年升级到  Dolphin  就一直未升级, Dolphin  版本就可以在设置中打开新版的 logcat 过滤功能,觉得不太习惯又关掉了。这次刚好 asfp 的下载重新学习下新版的功能。在此简单记录下。 我们可以在输入框输入 \\\"p\\\" 然后就会有提示 p 开头的

    2024年01月24日
    浏览(43)
  • 记录解决Android Studio下载gradle超时问题

    大三学生,2023年3月19号晚,首次下载Android Studio2022版本并新建项目,发现在下载gradle总是连接超时,舍友则没有这个问题,用的是同一个安装包。 查阅文献太多,忘记都有哪些了,就不列出来了,都是公开的。 总结:连接不上外网的谷歌导致网络超时,通过其他方法下载好

    2024年02月05日
    浏览(95)
  • 用此转移记录一下学的Android Studio

    app:用于存放程序的代码资源等内容,包含了很多子目录,也是使用最频繁的一个目录 libs:用于存放第三放jar包 src/AndroidTest:用于存放测试的代码文件 src/main/java:用于存放程序的代码文件 src/main/res:用于存放程序的资源文件 src/Android/Manifest。xml:清单文件是整个程序的配

    2024年02月20日
    浏览(32)
  • Windows下Android studio 搭建 android NDK 搭建 OLLVM 踩坑记录

    https://github.com/heroims/obfuscator/tree/llvm-9.0.1 这里有坑要注意 不能使用最新的 mingw 8.0.1 编译会报错 报错内容如下: 猜测可能的原因是 cmake版本和 mingw版本 对ollvm-9.0.1的cmakelists.txt的兼容性问题引起的 然后我重新下载mingw旧版本 我用的是 x86_64-5.4.0-release-posix-seh-rt_v5-rev0 mingw下载地

    2024年02月11日
    浏览(41)
  • Android Studio Hedgehog 代码补全失效问题记录

    Android Studio Hedgehog 代码补全失效问题记录 代码失效问题网上答案很多,如: 关闭省电模式;清空缓存;重启电脑;删除重新安装啥的。但是很一行都没有用,并且我电脑上的4.3.3版本的Android Studio是没有该问题的。 所以我推断应该是我的Hedgehog版本设置的问题 但是昨天还好好

    2024年02月22日
    浏览(47)
  • Flutter & Android问题记录 - 升级Android Studio 2022.2.1版本后运行项目报错

    最近一个Flutter项目有新需求,开发时一直是在iOS设备上运行,花了几天做完后运行到Android设备测试,结果项目构建失败了。 Flutter: 3.7.11 Android Studio: 2022.2.1 Java: 17.0.6 Gradle: 7.4 Android Gradle Plugin (AGP): 4.1.3 项目构建报错日志: 报错有点眼熟,根据以往开发经验,应该是Gradle版本

    2023年04月24日
    浏览(84)
  • Android Studio Flamingo (火烈鸟) 升级踩坑记录

    由于想要验证Compose最新的debug特性,而我目前使用的版本(Dolphin 小海豚)不支持,查看官网说明需要最新版本,所以不得已进行了一下Android Studio版本升级,过程中遇到一些问题,本文仅做记录。(真是不想升级,一升级就是连锁反应,需要处理的东西太多了,折腾很久。。

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包