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. VIJOS-P1066 弱弱的战壕

    JDOJ 1247: VIJOS-P1066 弱弱的战壕 题目传送门 Description 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了--b. mx在他的基地附近建立了 ...

  2. 排序算法-插入排序(Java)

    package com.rao.linkList; import java.util.Arrays; /** * @author Srao * @className InsertSort * @dat ...

  3. windbg是如何搜索符号文件的?

    来个样例 我的符号目录设置是: 用我们在windows下调试必须用到的ntdll.dll模块来讲下windbg加载符号文件的过程.windbg加载符号文件时,会首先根据配置的符号目录信息,在本地符号目 ...

  4. 将HashMap转换为List

    背景 ​ SpringBoot中,使用@RquestBody注解 hashMap 接收多个参数的json字符串数据,包括一个数组和一个int值.数组中为一个个的对象组成. 问题 ​ 使用 map.ge ...

  5. 转载-mysql中文编码问题

    具体原理见:MySQL:windows中困扰着我们的中文乱码问题 分割线: 我的电脑win7 64位,这个问题可能是所有win系统出现的问题 我出现的问题: 是正确的 出现了中文的张三,则错误,编码错 ...

  6. PATA1055 The World's Richest (25 分)

    1055 The World's Richest (25 分) Forbes magazine publishes every year its list of billionaires based ...

  7. Redis4.0.9最新版本安装时出现的问题

    Redis Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列. Redis的特点: Redis存在于内存,使用硬盘作为持久化 ...

  8. 浅谈Asp.Net中的几种传值方式

    一.使用Querystring Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象.如果你想传递一个安全性不是那么太重要或者是 ...

  9. 【BigData】Java基础_HashSet

    HashSet简介 HashSet是一个集合数据类型,具有以下三个特性: (1)可以存储过个数据对象 (2)HashSet中的数据不能重复 (3)HashSet的数据存储是无序的 HashSet的几个 ...

  10. Makefile文件基本格式

    以下是Makefile的基本模板 #指定编译器CC = g++#指定编译参数CFLAGS = -std=c++11 #指定头文件路径,此处用于指定非标准库的头文件路径INC = -I./ -I /us ...