Android Spinner

【Android studio】spinner控件 Spinner是Android开发中常用的UI控件之一,它是一个下拉列表,可以用来显示多个选项,用户可以通过点击下拉箭头选择其中的一项。Spinner通常用于用户选择一个选项的场景,比如选择性别、选择城市、选择日期等。在布局文件中定义Spinner控件,如: 阅读详情

Android Spinner

在Android的UI开发中,Spinner(下拉列表)总是可以用到的

Spinner是一个列表选择框,会在用户选择后,展示一个列表供用户进行选择。Spinner是ViewGroup的间接子类,它和其他的Android控件一样,数据需要使用Adapter进行封装。

Spinner

下面介绍一下Spinner的常用XML属性,Android也为其属性提供了相应的getter、setter方法:

  • android:spinnerMode:列表显示的模式,有两个选择,为弹出列表dialog以及下拉列表dropdown,如果不特别设置,默认为下拉列表。。
  • android:entries:使用<string-array.../>资源配置数据源。
  • android:prompt:对当前下拉列表设置标题,仅在dialog模式下有效。传递一个“@string/name”资源,需要在需要在资源文件中定义<string.../>。

作为一个列表选择控件,Spinner具有一些选中选项可以触发的事件,但它本身没有定义这些事件,均继承自间接父类 AdapterView 。Spinner支持的几个常用事件有以下几个:

  • AdapterView.OnItemCLickListener:列表项被点击时触发。
  • AdapterView.OnItemLongClickListener:列表项被长按时触发。
  • AdapterView.OnItemSelectedListener:列表项被选择时触发。

PS:因为适配器可以设置各种不同的样式,有选择、单选、多选,所以OnItemCLickListener和OnItemSelectedListener是适用于不同场景的。

Spinner的数据绑定

对于Spinner展示的数据源,一般使用两种方式设定数据:

  • 通过XML资源文件设置,这种方式比较死板,但是如果仅仅需要展示固定的、简单的数据,这种方式还是可以考虑的,比较直观。
  • 使用Adapter接口设置,这是最常见的方式,动态、灵活,可以设定各种样式以及数据来源。

Spinner使用XML资源文件设置数据

先来讲讲通过XML资源文件设置Spinner数据的方式,首先需要在/res/values目录下新建XML格式的资源文件,名字不重要,但是一般会使用strings.xml。在其中的<resourse.../>标签下,定义<string-array.../>标签,通过它中的<item.../>标签来设置选择数据。

XML文件结构:

<?xml version="1.0" encoding="utf-8"?>
<resources>
     ……
    <string-array name="arrayname">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>
    ……
</resources>

通过适配器Adapter可以设定比较复杂的展示效果,一般项目中比较常用的也是这种方式。

下面通过一个示例,讲解一下上面说的属性、事件,以及使用ArrayAdapter和XML资源文件设定简单数据,代码中注释已经说的很清楚了,这里就不再累述了。

部分布局代码:

    <TextView
        android:id="@+id/tv_spinner_entriesshow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#f2f2f2"
        android:padding="10dp"
        android:text="(entries)您的选择的是"
        android:textSize="16sp" >
    </TextView>

    <Spinner
        android:id="@+id/sp_spinner_entriescontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:entries="@array/arrayname" >
    </Spinner>

然后在Activity里,直接使用

Resources res =getResources();
String[] arraynames=res.getStringArray(R.array.arrayname);

即可取得<string-array name="arrayname">"下的所有item数据,简单又方便的一种方法。

Spinner使用Adapter接口设置数据

下面介绍一下最简单的Spinner使用Adapter接口设置数据

  • 新建一个Android工程,名字为SpinnerTest。修改layout下的activity_main.xml,添加一个Textview和一个Spinner,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#d7d7d7"
    android:orientation="vertical"
    tools:context="com.ylbf.spinnertest.MainActivity" >

    <TextView
        android:id="@+id/tv_spinner_show"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#f2f2f2"
        android:padding="10dp"
        android:text="您的选择的是"
        android:textSize="16sp" >
    </TextView>

    <Spinner
        android:id="@+id/sp_content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </Spinner>
    <!-- 定义一个下拉菜单 -->

</LinearLayout>
  • 修改你的MainActivity.class类,在这里我们就要自定义一个Spinner了,完整代码如下:
package com.ylbf.spinnertest;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
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.TextView;

public class MainActivity extends Activity {

    private TextView tv_show;
    private Spinner sp_content;
    private List<String> list = new ArrayList<String>();
    private ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findView();
        init();
        setEvent();
        display();
    }

    private void display() {
        //为下拉列表定义一个适配器,这里就用到里前面定义的list。
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
        //为适配器设置下拉列表下拉时的菜单样式。
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        sp_content.setAdapter(adapter);
    }

    private void init() {
        list.add("北京");
        list.add("上海");
        list.add("深圳");
        list.add("南京");
        list.add("重庆");
    }

    private void setEvent() {
        //为下拉列表设置各种事件的响应,这个事响应菜单被选中
        sp_content.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                tv_show.setText("您选择的是:"+ adapter.getItem(position));
                //或者使用以下方法 在提交取值时比较方便
                //tv_show.setText("您选择的是:"+ sp_content.getSelectedItem().toString());
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                tv_show.setText("请您选择内容");
            }
        });
    }

    private void findView() {
        tv_show = (TextView) findViewById(R.id.tv_spinner_show);
        sp_content = (Spinner) findViewById(R.id.sp_spinner_content);
    }
}

上面完成了Spinner最简单的选择一个内容,以一个TextView展示选择内容,Spinner使用Adapter接口设置数据;

CAN收发器TJA1145A休眠唤醒应用 TJA1145的唤醒工作原理主要依赖于其内部的唤醒机制和外部硬件的配合,主要涉及低功耗状态、选择性唤醒功能。TJA1145是一款CAN收发器,它支持多种工作模式,包括NormalStandbySleep等。在这些模式中,Sleep模式是最低功耗状态,而Normal模式则是最活跃的状态,其中Standby模式处于两者之间,允许一定的功能操作但功耗较低。TJA1145可以通过接收特定的唤醒源从Sleep或Standby模式唤醒到Standby或Normal模式。唤醒源的检测与处理。 阅读详情

相关推荐

tiktok算法协议研究

经过上述分析,可以确定目标字符串来源于一段 JSON 数据,而这段 JSON 数据来自于一个经过加密的本地文件。对字符串 "sdi_v2" 进行 SHA-1 计算,得到 20 字节的结果;将第一步得到的数据进行MD5计算,生成16字节的结果;将第二步的结果转换为十六进制字符串,从而得到 32 字节的密钥。写这种算法分析的帖子真的是太无聊了,就先分析到这里吧,后续有机会再来谈下被加密的本地文件是怎么来的!!自我感觉TT的算法并不难,就是量太大了,所以我想问问有没有感兴趣的朋友来一起分析,欢迎联系。

2503_90751938的博客 2575

Android常用控件Spinner的使用(详解)

两种实现Spinner的方法

qq_62079241的博客 1万+

一文读懂“数据分发服务DDS”(Data Distribution Service,RTPS,OMG)

DDS 数据分发服务(Data Distribution Service) 数据分发服务DDS(DataDistributionService)是对象管理组织(OMG)在HLA及CORBA等标准的基础上制定的新一代分布式实时通信中间件技术规范,DDS采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,能保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。DDS...

DDS技术交流推广大本营 4万+

Android之Spinner使用详解

Spinner(列表选择框)的基本使用 当我们的app需要用户输入数据时,除了让用户自己打字以外,还有一种比较贴心的设计: 列出一组选项让用户从中挑选,从而方便了我们的用户! 一、常用的属性 属性名 作用 android:dropDownHorizontalOffset 设置列表框的水平偏移距离 android:dropDownVerticalOffset 设置列表框的水平竖直距离 android:dropDownSelector 列表框被选中时的背景 android:dropD

Mq_sir的博客 3万+

使用FPGA实现MIPI DSI接口

通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。通过使用FPGA,我们可以实现MIPI DSI接口,并在FPGA上生成相应的时序和电平转换电路。在本文中,我们将探讨如何使用FPGA实现MIPI DSI接口,并提供相应的源代码。根据不同的发送状态,我们设置相应的输出信号。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。请注意,这只是一个基本的示例,用于说明如何使用FPGA实现MIPI DSI接口的发送功能。

ZdqDeveloper的博客 1698

2022年全国职业院校技能大赛高职组大数据技术与应用赛项赛卷⑩—解析答案

工业互联网是工业全要素、全产业链、全价值链的全面连接,是人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键支撑。加快发展工业互联网产业,不仅是各国顺应产业发展大势,抢占产业未来制高点的战略选择,也是我国推动制造业质量变革、效率变革和动力变革,实现高质量发展的客观要求。 为完成工业大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 581

Android 之 Spinner (列表选项框)的基本使用

本来本节是想给大家介绍一个Gallery(画廊)的一个控件的,后来想想还是算了,因为 在Android 4.1后就已经被弃用了,尽管我们可以通过兼容不来使用Gallery,不过想想 还是算了,因为Gallery在每次切换图片的时候,都需要重新创建视图,这样无疑会造成 很大资源浪费!我们可以通过其他方法来实现Gallery效果,比如通过HorizontalScrollView 来实现水平滚动效果,或者编写一个水平方向的ListView~有兴趣自己谷歌! 本节学习的是一个叫做Spinner的Adapter控件。

leyang0910的博客 3893

基于Keil软件实现对射式红外传感器计次 (江协科技HAL库)

用HAL库复现江协科技,让嵌入式学习之路更顺畅。

2401_82728381的博客 798

Android Spinner控件

1.Spinner类 Spinner类提供了一个下拉列表。常用参数 entries,指定加载数据 spinnerMode,指定显示方式,dropdown是下拉菜单,dialog是弹出框 prompt,指定弹出框标题 界面UI &amp;amp;amp;amp;amp;lt;Spinner android:id=&amp;amp;amp;amp;quot;@+id/spinner1&amp;amp;amp;amp;quot; a

假装你是大灰狼的专栏 2219

【深度学习新浪潮】Harness Engineering 入门实战必看|6个从零可跑开源项目,新手快速上手垂域AI工程落地

很多同学入门 AI Agent、做大模型垂域落地时,都会卡在同一个痛点:只会调用模型、写简单Prompt,却不懂如何做约束管控、流程护栏、任务编排、多智能体边界隔离。而这正是的核心价值。不同于纯理论概念,Harness Engineering 更偏向工程实战,新手不用啃复杂论文,从开源项目动手实操是最高效的学习方式。本文从零基础易上手、可本地一键部署、支持二次改造做实战项目。

专注:太空算力、AI infra、异构调度、大模型成本工程 232

自监督学习原理与代码实战案例讲解

自监督学习原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 自监督学习的起源与发展 1.1.1 监督学习的局限性

AI天才研究院 624

android spinner 简书,安卓之Spinner

package com.example.spinner;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;impor...

weixin_35917193的博客 203

全球SAR卫星大盘点与回波数据处理专栏目录

本专栏将详细介绍各国各地区的SAR卫星的特点和性能,以及SAR回波数据的处理方法和技巧。主要介绍民用和商用SAR卫星,帮助你了解商业SAR卫星的最新动态和技术,MATLAB代码将全部开源。以下是专栏目录,持续更新中。

3161

安卓界面控件之Spinner

安卓界面控件之SpinnerSpinner的定义:如果为Spinner中添加选择项目 Spinner的定义: 1.Spinner是一种能够从多个选项中选一个选项的控件,使用浮动菜单为用户提供选择 2.类似于桌面程序的组合框(ComboBox) Spinner位于工具栏Palette栏中的Containers中的第一个(意味着Spinner是一种容器,存放选择的容器) 如...

weixin_44405478的博客 1190

efm32 入门.pdf

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android spinner listview,安卓中ListView中怎么加Spinner!

com.apress.gerber.leadus;android.app.Activity;android.os.Bundle;android.view.View;android.widget.AbsListView;android.widget.AdapterView;android.widget.ArrayAdapter;android.widget.ListView;android.widg...

weixin_29421255的博客 409

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 自定义spinner样式,【安卓】如何制作Spinner的Hint提示效果,并自定义Spinner样式...

这个需求其实还是有的,有时候我们想在Spinner中制作出一个类似于TextView的hint那样的效果。如下: 当你第一次看到这个Spinner的时候,其中显示“点击选择”,而你点了一下,就会出现选项,一旦点选了某个选项,“点击选择”就会从此消失,也就是说,那只是提示,不参与逻辑判断。也就是boni2k提供的solution,于是我复制过来做了一些自己的测试和理解如下:代码部分:// 布局文件 ...

weixin_35462903的博客 1090

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

安卓 Spinner的用法

,

代码是程序员的语言,博客是思想的桥梁,连接你我,共享智慧之光。 5627

Android 下拉控件Spinner

Spinner 是android 系统下拉的一个控件 下面分别在把下拉内容在xml 中和java 代码中 来实现操作 1 xml 中 在xml 中创建一个spinner <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" an

小牧在一直在学习,在前进的道路上大家一起学习,进步。 6714

Android中Spinner用法

一、Spinner的两种展示样式 下拉列表的展示方式有两种,一种是在当前下拉框的正下方展示列表,此时把spinnerMode属性设置为dropdown;另一种是在页面中部以对话框形式展示列表,此时把SpinnerMode属性设置为dialog。 二、Spinner相关方法 setPrompt:设置标题文字。 setAdapter:设置下拉列表的适配器。 setSelection:设置当前选中哪项。注意该方法要在setAdapter方法之后调用。 setOnItemSe

水月洞天 2万+

Android开发使用Spinner更新ListView

Android中通过Spinner更新ListView

Afison的博客 897

android spinner禁止点击_一行代码解决安卓重复点击

秦子帅明确目标,每天进步一点点.....作者| Zhujiang地址|juejin.im/post/5ea66d64f265da480836d2b2五一期间发文时间改为20:00,五一不停更!抛出问题“大哥,有个问题想问你!”“哎,说吧(内心戏:咋又来了。。。准没好事!)”“我的一个页面中有一个查询按钮,点击就会发出网络请求,等待返回结果后更新数据。”“这不挺好的嘛!有啥问题啊...

weixin_42119358的博客 1152

安卓开发: Spinner联动

主要就是实现上面图片的功能 先建立一个arrays.xml文件,然后建立几个string数组 江苏 山东 徐州 南京 泰安 台儿庄 可以直接在布局文件中用entries对Spinner绑定一个数组 实

JUST CODE IT 870

android静态spinner,2020/4/10安卓开发:Spinner下拉框

layout中定义组件使用数组为spinner静态赋值在valuse下建立arrays.xml定义数组元素赋值(只能用string数组) 赵丽颖 迪丽热巴 杨超越使用spinner的entries属性使用适配器String[] strings={"赵丽颖","迪丽热巴","杨春雨"};Spinner spinner=(Spinner)findViewById(R.id.spinn...

weixin_33959449的博客 263

安卓:下拉列表spinner的联动

安卓下拉列表spinner的联动结果展示:代码部分java代码分析:1、为下拉列表设置新的下拉项目数据2、两个下拉列表联动关键代码块3、下拉列表项目的选定 结果展示: 即点击第一个下拉列表内容时,第二个下拉列表的内容那个会根据第一个下拉列表内容改变而改变 代码部分 xml: activity_spinner_test.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sche

fuzhijieabc的博客 464

安卓Spinner下拉框

先在values定义一个字符数组 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="arr"> <item>狂三</item> <item>琴里</item> <...

Sakura_huatex的博客 257
上一篇: Android M 新的运行时权限开发者需要知道的一切
下一篇: 在android的spinner中,实现取VALUE值和ID值
YLBF_DEV
博客等级 码龄12年 30粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值