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);
}
}

运行效果如下:

最新文章

  1. C# :GDI+技术生成复杂型彩色验证码(转载)
  2. timeit统计运行时间
  3. 设置iPhone网页固定到桌面上的图标
  4. Android高效内存:让图片占用尽可能少的内存
  5. seajs的那些坑
  6. Mysql中的like模糊查询
  7. Office远程代码执行漏洞(CVE-2017-11882)复现
  8. VB6工程在Win10系统打开提示MSCOMCTL.OCX无法加载
  9. Fragment嵌套Fragment时候。子类fragment调用父容器Fragment方法
  10. Spring源码学习-容器BeanFactory(三) BeanDefinition的创建-解析Spring的默认标签
  11. 【代码笔记】Web-CSS-CSS 语法
  12. css 中 zoom和transform:scale的区别(转载)
  13. urlib库的使用
  14. kafka8 编写简单消费者
  15. Codeforces Round #466 (Div. 2) -A. Points on the line
  16. web项目执行流程
  17. Android学习之基础知识九—数据存储(持久化技术)
  18. Liunx mv(转)
  19. python第二十九课——文件读写(readline()和readlines()的使用)
  20. Lua面向对象 --- 单例

热门文章

  1. ppt演讲者视图不可用的解决办法
  2. HTML基础二-DOM操作
  3. [RN] React Native 中使用 stickyHeaderIndices 实现 ScrollView 的吸顶效果
  4. HBase快照迁移数据失败原因及解决办法
  5. token的验证过程
  6. 网络协议 10 - Socket 编程(上)
  7. C语言博客作业04—数组
  8. Salesforce 开发整理(四)记录锁定
  9. V8 引擎如何进行垃圾内存的回收?
  10. 用简单的JS代码制作计算器