这次主要是悬系的下拉框Spinner和数字转轮NumberPicker的使用。先分析相关的用到的知识点。

在Android中,用string-array是一种简单的提取XML资源文件数据的方法。
  例子如下:

  把相应的数据放到values文件夹的arrays.xml文件里

  1. <?xml version="1.0" encoding="utf-8"?>
  2.   <resources>
  3.    <string-array name="city">
  4.    <item>丰台区</item>
  5.    <item>石景山区</item>
  6.    <item>海淀区</item>
  7.    <item>漳州市</item>
  8.    <item>朝阳区</item>
  9.    </string-array>
  10.   </resources>

  然后在Activity里,直接使用
  Resources res =getResources();
  String[] city=res.getStringArray(R.array.city);
  即可取得string-array name="city"下的所有item数据,简单又方便的一种方法

对于

  1. private AdapterView.OnItemSelectedListener spnSexOnItemSelected=new AdapterView.OnItemSelectedListener() {}
    中的相关参数的知识点:
  1. parent 发生选中事件的 AbsListView。
  2. view AbsListView 中被选中的视图。
  3. position 视图在一览中的位置(索引)。
  4. id 被点击条目的行 ID。
  1. private AdapterView.OnItemSelectedListener spnSexOnItemSelected=new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    msSex=parent.getSelectedItem().toString();
    }是用来确定下拉框中对应的被选中的哪一项。
    具体相关的实现代码如下:
    MainActivity.java
  1. package com.example.myapplicationhome;
  2. import androidx.appcompat.app.AppCompatActivity;
  3.  
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.AdapterView;
  7. import android.widget.Button;
  8. import android.widget.EditText;
  9. import android.widget.NumberPicker;
  10. import android.widget.RadioButton;
  11. import android.widget.RadioGroup;
  12. import android.widget.Spinner;
  13. import android.widget.TextView;
  14.  
  15. public class MainActivity extends AppCompatActivity {
  16.  
  17. private NumberPicker mNumPickerAge;
  18. private Button mBtnOk;
  19. private TextView mTxtR,mTxtAge;
  20. private Spinner mSpnSex;
  21. private String msSex;
  22.  
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27.  
  28. mTxtAge=(TextView)findViewById(R.id.txtAge);
  29. mTxtAge.setText("25");
  30.  
  31. mNumPickerAge=(NumberPicker)findViewById(R.id.numPickerAge);
  32.  
  33. mNumPickerAge.setMinValue(0);
  34. mNumPickerAge.setMaxValue(200);
  35. mNumPickerAge.setValue(25);
  36.  
  37. mNumPickerAge.setOnValueChangedListener(numPickerAgeOnValueChange);
  38.  
  39. mBtnOk=(Button)findViewById(R.id.btnOk);
  40. mTxtR=(TextView)findViewById(R.id.txtR);
  41.  
  42. mBtnOk.setOnClickListener(btnOkOnClick);
  43. mSpnSex=(Spinner)findViewById(R.id.spnSex);
  44. mSpnSex.setOnItemSelectedListener(spnSexOnItemSelected);
  45.  
  46. }
  47.  
  48. private View.OnClickListener btnOkOnClick =new View.OnClickListener(){
  49. @Override
  50. public void onClick(View v) {
  51. int iAge=mNumPickerAge.getValue();
  52. String strSug=getString(R.string.result);
  53.  
  54. if(msSex.equals(getString(R.string.sex_male)))
  55. {
  56. if(iAge<)
  57. strSug+=getString(R.string.sug_not_hurry);
  58. else if(iAge>33)
  59. strSug+=getString(R.string.sug_get_married);
  60. else
  61. strSug+=getString(R.string.sug_find_couple);
  62. }
  63. else
  64. {
  65. if(iAge<)
  66. strSug+=getString(R.string.sug_not_hurry);
  67. else if(iAge>30)
  68. strSug+=getString(R.string.sug_get_married);
  69. else
  70. strSug+=getString(R.string.sug_find_couple);
  71. }
  72. mTxtR.setText(strSug);
  73. }
  74. };
  75.  
  76. private AdapterView.OnItemSelectedListener spnSexOnItemSelected=new AdapterView.OnItemSelectedListener() {
  77. @Override
  78. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  79. msSex=parent.getSelectedItem().toString();
  80. }
  81.  
  82. @Override
  83. public void onNothingSelected(AdapterView<?> parent) {
  84.  
  85. }
  86. };
  87. private NumberPicker.OnValueChangeListener numPickerAgeOnValueChange=new NumberPicker.OnValueChangeListener() {
  88. @Override
  89. public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
  90. mTxtAge.setText(String.valueOf(newVal));
  91. }
  92. };
  93. }

strings.xml

  1. <resources>
  2. <string name="app_name">婚姻建议程序</string>
  3. <string name="sex">性别:</string>
  4. <string name="age">年龄:</string>
  5. <string name="btn_ok">确定</string>
  6. <string name="result">最终诊断结果:</string>
  7. <string name="edt_age_hint">(输入年龄)</string>
  8. <string name="sug_not_hurry">还不急</string>
  9. <string name="sug_get_married">你废了!</string>
  10. <string name="sug_find_couple">开始找对象。</string>
  11. <string name="sex_male"></string>
  12. <string-array name="sex_list">
  13. <item></item>
  14. <item></item>
  15. </string-array>
  16. <string name="spn_sex_list_prompt">请选择性别</string>
  17.  
  18. </resources>

activaty_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".MainActivity" >
  9.  
  10. <TextView
  11. android:id="@+id/sex"
  12. android:layout_width="match_parent"
  13. android:layout_height="wrap_content"
  14. android:text="@string/sex"
  15. android:textSize="25sp" />
  16. <Spinner
  17. android:id="@+id/spnSex"
  18. android:layout_width="match_parent"
  19. android:layout_height="wrap_content"
  20. android:entries="@array/sex_list"
  21. android:spinnerMode="dialog"
  22. android:prompt="@string/spn_sex_list_prompt" />
  23. <TextView
  24. android:id="@+id/age"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content"
  27. android:text="@string/age"
  28. android:textSize="25sp" />
  29. <TextView
  30. android:id="@+id/txtAge"
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:text="0"
  34. android:textSize="25sp" />
  35. <NumberPicker
  36. android:id="@+id/numPickerAge"
  37. android:layout_width="wrap_content"
  38. android:layout_height="wrap_content"
  39. android:layout_gravity="left" />
  40. <Button
  41. android:id="@+id/btnOk"
  42. android:layout_width="wrap_content"
  43. android:layout_height="wrap_content"
  44. android:layout_gravity="center_horizontal"
  45. android:background="#4CAF50"
  46. android:text="@string/btn_ok" />
  47.  
  48. <TextView
  49. android:id="@+id/txtR"
  50. android:layout_width="match_parent"
  51. android:layout_height="wrap_content"
  52. android:text="@string/result"
  53. android:textSize="25sp" />
  54. </LinearLayout>

具体的实验结果如下:

家庭记账本app进度之下拉框和数字转轮的相关应用的更多相关文章

  1. 家庭记账本app进度之android中AlertDialog的相关应用以及对日期时间的相关操作(应用alertdialog使用的谈话框)

    对于AlertDialog的相关知识: 1.创建构造器AlertDialog.Builder的对象:    2.通过构造器对象调用setTitle.setMessage.setIcon等方法构造对话框 ...

  2. 家庭记账本app进度之复选框以及相应滚动条的应用

    这次主要是对于android中复选框的相应的操作.以及其中可能应用到的滚动条的相关应用.每一个复选框按钮都要有一个checkBox与之相对应. 推荐使用XML配置,基本语法如下:<CheckBo ...

  3. 家庭版记账本app进度之编辑框组件

    <EditText>中设置提示信息是用到的语句是android:hint来进行提示语句的书写. android:inputType可以将此编辑框设置为输入密码的编辑框(现实的是小黑点) a ...

  4. 家庭记账本app进度之对于登录和注册两个界面点击按钮的相互跳转

    这次主要完成了两个两个android页面之间的跳转.从登录页面点击注册就会跳转到注册页面.在注册页面点击返回登录,这样就可以返回到登录界面.主要是这样的操作.其中遇到了一个困难主要是当点击按钮的时候, ...

  5. 家庭记账本app进度之关于单选按钮的相关操作(添加点击按钮事件以及点击单选更改事件)

    这次主要是通过代码实现了android中的相关单选按钮的相关操作,之后再最下面有一个按钮,当点击这个按钮的时候,会获取当上面的相关信息,之后再下方会进行相应的文字显示,获取的信息不同显示的信息也不会一 ...

  6. 家庭记账本app进度之关于tap的相关操作1

    今天还主要学习关于怎样制作微信的先关的tap. 今天的主要成果是已经了解了相关的技术,以及相关的思路.代码经过一个下午的编写,基本接近尾声. 更详细的实验代码,以及相关的知识点将在明天完善后进行发表. ...

  7. 家庭记账本app进度之ui相关概念控制ui界面与布局管理

    ui就是用户界面设计的意思. 首先是view,view相当于窗户上的玻璃. 1.android:id属性.android:id="@+id/user".他的id是user前面的@+ ...

  8. 进度1_家庭记账本App

    今天完成了昨天的初步构想,详细介绍见上一篇博客,具体项目结构和案例如下: MainActivity.java: package com.example.familybooks; import andr ...

  9. 进度4_家庭记账本App

    在上一个博客中,我学习了用Fragment进行数据的传值,但是出现了好多问题,我通过百度查阅资料发现fregment在进行数值传输的时候有的语法不能使用,并且不方便的进行数据库的使用,所以我在原来的家 ...

随机推荐

  1. ReentrantReadWriteLock 源码分析以及 AQS 共享锁 (二)

    前言 上一篇讲解了 AQS 的独占锁部分(参看:ReentrantLock 源码分析以及 AQS (一)),这一篇将介绍 AQS 的共享锁,以及基于共享锁实现读写锁分离的 ReentrantReadW ...

  2. sklearn-转换器与机器学习流程

    一.sklearn估计器 二.机器学习开发流程 .

  3. EPX-Studio调用Dll模块

    procedure TForm1.BitBtn1Click(Sender: TObject); var REP : IExcelPanelXDisp; modulePath:string; begin ...

  4. Swift:字符串(String)分割之Substring优雅转换

    认识Substring类型 这是一个全新的类型,看类名像是String的子类,但是大家千万别被误导了,Substring并不是String的子类,这是两个不同的类型,但是它们都继承了StringPro ...

  5. STL篇--list容器

    list容器: 1.list 容器 的本质就是双向环形链表,最后一个节点刻意做成空节点,符合容器的左闭右开的原则2.list 的迭代器 是一个智能指针,其实就是一个类,通过操作符重载模拟各种操作(++ ...

  6. [剑指offer]3.数组中的重复数字

    3.数组中的重复数字 题目 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了 ...

  7. angualrjs 总结 随记(二)

    表单控制变量form 控制变量 //字段是否未更改 fromName.inputFieldName.$pristine //字段是否更改 fromName.inputFieldName.$dirty ...

  8. sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]

    遍历字符串 我觉得首先要提出一个疑问: 一个数据库本身就是用于存储的,遍历字符串究竟有何意义? 先看如何实现的,毕竟sql service 是没有for循环,也没有loop和while的. selec ...

  9. 洛谷 P5639 【CSGRound2】守序者的尊严 题解

    原题链接 简要题意: 从 \(1\) 号位开始走,可以连续走过一段连续的 \(0\) ,每走一次,所有位置取反. (即 \(0 \gets 1\),\(1 \gets 0\)). 算法一 模拟暴力即可 ...

  10. 【多校】2019 Multi-University Training Contest 1官方题解

    Blank 定义dp[i][j][k][t]dp[i][j][k][t]dp[i][j][k][t]代表填完前ttt个位置后,{0,1,2,3}\{0,1,2,3\}{0,1,2,3}这4个数字最后一 ...