list view组件和spinner组件使用方法类似,从string.xml中通过entries获取数据显示。但如果要显示的列表项无法在执行前确定,或是要在程序执行的过程中变更选项内容,通过entries获取数据就行不通了。

在这里需要用到ArrayAdapter。ArrayAdapter对象会从指定的数据源中取出每一项数据,再提供给spinner组件来显示。

我在这里举个栗子:比如我们平常买奶茶,有些是可以常温,但是有些只有加冰或去冰。

布局文件代码如下:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.hs.example.exampleapplication.SpinnerActivity"> <Spinner
android:id="@+id/drink"
android:layout_width="match_parent"
android:layout_height="wrap_content"> </Spinner> <Spinner
android:id="@+id/temp"
android:layout_width="match_parent"
android:layout_height="wrap_content"> </Spinner> <Button
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="ShowOrder"
android:text="下订单"/> <TextView
android:id="@+id/Text_order"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=""/> </LinearLayout>

逻辑代码如下:

 public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

     Spinner drink , temp;
TextView order;
String [] drinks = {"珍珠奶茶","波霸奶茶","丝袜奶茶","金桔柠檬"};
String [] tempSele1 = {"加冰","去冰","常温"};
String [] tempSele2 = {"加冰","去冰"}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner); drink = this.findViewById(R.id.drink);
//创建array adapter对象 选单未打开时的样式 饮品选项
ArrayAdapter<String> drinkAd = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,drinks);
drinkAd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置下拉选单的样式
drink.setAdapter(drinkAd); //设置adapter对象
drink.setOnItemSelectedListener(this); temp = this.findViewById(R.id.temp);
order = this.findViewById(R.id.Text_order); } @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String [] tempSet;
if(i == ){          //购买金桔柠檬时,没有常温选项
tempSet = tempSele2;
}else{
tempSet = tempSele1;
}
ArrayAdapter<String> tempAd = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,tempSet);
tempAd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
temp.setAdapter(tempAd);
} @Override
public void onNothingSelected(AdapterView<?> adapterView) { } public void ShowOrder(View view){
String msg = drink.getSelectedItem() + "|" + temp.getSelectedItem();
order.setText(msg);
}
}

运行效果如下:

Android-----spinner组件使用(实现下单)的更多相关文章

  1. Android Spinner组件的使用方法

    Spinner是什么呢,其实就是我们常见的下拉框,比如: 首先,我们要创建一个Spinner,才能在Spinner中添加我们想要的元素,在xml文件中: <Spinner android:id= ...

  2. android中使用spinner组件,以key,value的方式

    接着上一篇文章的内容:android中使用spinner组件 稍做修改,以key,value的方式,在实际使用中,经常需要获取的值并不一定跟显示的内容一致. 需要先添加一个对象类,用来描述key,va ...

  3. android中使用spinner组件

    spinner组件类似于html中的select标签,实现下拉选择框的功能. 添加一个Activity,界面上添加一个spinner下拉框,一个button按钮.点击按钮,获取spinner下拉框当前 ...

  4. Android Spinner使用简介

    Android中使用Spinner作为下拉列表,下面直接看实现方式: (1)使用ArrayAdapter来实现: 实现步骤: 1. 在布局文件中定义Spinner组件: 2. 向Spinner添加需要 ...

  5. Xamarin android spinner的使用方法

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. 所谓 Spinner 组件

    Spinner组件在平常的开发过程中应该算是比较常用的隶属于Input Control的android控件了,所以我们很有必要掌握这一个知识点,下面我就来谈一谈我对这个组件的一些认识. 是什么? 下拉 ...

  7. Android Spinner 下拉框简单应用 详细注解

    目录 Android Spinner 代码部分 Spinner代码介绍 核心代码 说在最后 @ Android Spinner Spinner 提供下拉列表式的输入方式,该方法可以有效节省手机屏幕上的 ...

  8. Android业务组件化之子模块SubModule的拆分以及它们之间的路由Router实现

    前言: 前面分析了APP的现状以及业务组件化的一些探讨(Android业务组件化之现状分析与探讨),以及通信的桥梁Scheme的使用(Android业务组件化之URL Scheme使用),今天重点来聊 ...

  9. Android业务组件化之现状分析与探讨

    前言: 从个人经历来说的话,从事APP开发这么多年来,所接触的APP的体积变得越来越大,业务的也变得越来越复杂,总来来说只有一句话:这是一个APP臃肿的时代!所以为了告别APP臃肿的时代,让我们进入一 ...

  10. Android业务组件化之URL Scheme使用

    前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在 ...

随机推荐

  1. 学习:CC断点

    断点介绍: shark恒老师说有四种说法,但是其实都是相同的 第一个读法:普通断点 第二个读法:F2断点 第三个读法:INT3断点( int3其实就是汇编指令 ) 第四个读法:CC断点 (CC其实就是 ...

  2. VMWare中CentOS 7 配置 XShell连接

    https://jingyan.baidu.com/article/363872ec796dfc6e4ba16f09.html http://www.cnblogs.com/iskylite/p/76 ...

  3. pytest--运行指定的测试和参数化

    mark pytest提供了标记机制,允许你使用marker对测试函数做标记,一个测试函数可以有多个marker,一个marker也可以用来标记多个测试函数 比如我们需要进行冒烟测试,不可能把所有的用 ...

  4. C++中静态成员变量要在类外部再定义或初始化的原因

    C++中静态成员变量要在类外部再定义或初始化,否则会产生错误. class A { public: static int a; }; int A::a=0; 为什么要在类的外部进行定义的原因: 1. ...

  5. 洛谷p1458顺序的分数题解

    抱歉,您们的蒟蒻yxj不知道怎么插入链接qwq就只好粘个文本的了qwq:https://www.luogu.org/problemnew/show/P1458 没错,是个黄题,因为你们的小蒟蒻只会这样 ...

  6. 洛谷 P4427

    传送门 洛谷P4427 题意: 给你一个数,然后让你求这两个数之间的点的深度的k次方和. #思路: 很容易想到lca.因为lca可以说是求树上两个点的距离的好方法.而且lca还能遍历每一个点. 然后我 ...

  7. Ubuntu 修改apt-get源为阿里源

    原文件重命名备份 sudo mv /etc/apt/sources.list /etc/apt/source.list.bak 编辑源列表文件 sudo vim /etc/apt/sources.li ...

  8. Maven 教程(7)— Maven使用的最佳实践

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79544201 1.设置MAVEN_OPTS环境变量 通常需要设置MAVEN_OP ...

  9. 小程序接口无法传递session校验验证码

    今天在写接口的时候发现一个问题,我用apiaaz测试一切正常,但是从小程序接口请求验证码,一直验证失败. 最开始用的图形验证码,查阅了不少资料,最后怀疑是cookie的问题,解决无果,换成了短信验证码 ...

  10. C++17 新特性之 std::optional(上)

    最近在学习 c++ 17 的一些新特性,为了加强记忆和理解,把这些内容作为笔记记录下来,有理解不对的地方请指正,欢迎大家留言交流. 引言 在介绍之前,我们从一个问题出发,C++ 的函数如何返回多个值? ...