AutoCompleteTextView、Spinner、ListView、Dialog等高级组件练习

Aim :

1.  用户名和密码使用EditText;

2.  所在地区使用Spinner控件,供用户选择所在的省份;

3.  出生日期:用户单击输入框时,弹出DatePickerDialog,将用户设置的日期显示在EditText中;

4.  E-mail使用AutoCompleteTextView控件。

5.  当用户点击注册按钮时,弹出列表对话框,显示用户输入的信息,供用户进行确认。


Review :

DatePickerDialog : 日期选择对话框,相应的有 时间选择对话框TimePickerDialog , 用法:

1. 通过New关键字创建DatePickerDialog、TimePickerDialog实例,调用它们的show()方法即可将日期和时间选择对话框显示出来;

2. 为DatePickerDialog、TimePickerDialog绑定监听器,可以保证用户通过DatePickerDialog、TimePickerDialog设置时间时触发监听器,从而通过监听器来获取用户设置的事件;

AlertDialog : 可以生成各种内容的对话框,可分为4个区域:图标区、标题区、内容区、按钮区;

创建AlertDialog的步骤:

1. 创建AlertDialog对象;

2. 调用AlertDialog.Builder的setTitle()、setCustomTitle()、setIcon()、setMessage()、setItems()等方法设置标题、图标、对话框内容;

3. 调用AlertDialog.Builder的setPositiveButton()、setNegativeButton等方法添加多个按钮;

4. 调用create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来;

对话框内容使用有如下方法:

setMessage() : 设置对话内容为简单文本内容;

setItems() : 设置对话框内容为简单列表项;

setSingleChoiceItems() : 设置对话框内容为单选列表项

setMultiChoiceItems() : 设置对话框内容为多选列表项

setAdapter() : 设置对话框内容为自定义列表项

setView() : 设置对话框内容为自定义View


Structure:

主要还是MainActivity.java和activity_main.xml两个文件;


Code:

MainActivity.java

[java]  view plain  copy
  1. package com.example.bestone.test4_2;  
  2.   
  3. import android.app.DatePickerDialog;  
  4. import android.content.DialogInterface;  
  5. import android.support.v7.app.AlertDialog;  
  6. import android.support.v7.app.AppCompatActivity;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.ArrayAdapter;  
  10. import android.widget.AutoCompleteTextView;  
  11. import android.widget.Button;  
  12. import android.widget.DatePicker;  
  13. import android.widget.EditText;  
  14. import android.widget.Spinner;  
  15.   
  16. import java.util.Calendar;  
  17.   
  18. public class MainActivity extends AppCompatActivity {  
  19.   
  20.     private Spinner spinner;  
  21.     private EditText birthday;  
  22.     private AutoCompleteTextView email;  
  23.   
  24.   
  25.     @Override  
  26.     protected void onCreate(Bundle savedInstanceState) {  
  27.         super.onCreate(savedInstanceState);  
  28.         setContentView(R.layout.activity_main);  
  29.   
  30.   
  31.         spinner = (Spinner)findViewById(R.id.spinner);    //获取界面布局中的Spinner组件  
  32.         String[] arr = {  "北京""浙江""天津""河南","山东","上海"};  
  33.         ArrayAdapter<String> adapter = new ArrayAdapter<>(this,  
  34.                 android.R.layout.simple_list_item_multiple_choice,arr  
  35.         );  
  36.         spinner.setAdapter(adapter);  
  37.   
  38.   
  39.         birthday = (EditText)findViewById(R.id.birthday);       //为EidtText点击事件绑定监听器  
  40.         birthday.setOnClickListener(new View.OnClickListener() {  
  41.             @Override  
  42.             public void onClick(View view) {  
  43.                 Calendar c = Calendar.getInstance();  
  44.                 new DatePickerDialog(MainActivity.this,  
  45.                         new DatePickerDialog.OnDateSetListener(){  
  46.                             @Override  
  47.                             public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {  
  48.                                 EditText show = (EditText)findViewById(R.id.birthday);  
  49.                                 show.setText(i+"年"+(i1+1)+"月"+i2+"日");  
  50.                             }  
  51.                         }  
  52.                         ,c.get(Calendar.YEAR)  
  53.                         ,c.get(Calendar.MONTH)  
  54.                         ,c.get(Calendar.DAY_OF_MONTH)).show();  
  55.             }  
  56.         });  
  57.   
  58.         email = (AutoCompleteTextView)findViewById(R.id.email);  
  59.        // String email = email.getText().toString();                 //输入数字自动匹配邮箱后缀暂为解决,以后会补充  
  60.   
  61.         String[] emailSufix = new String[]{"@outlook.com","@gmail.com"};  
  62.   
  63.   
  64.         ArrayAdapter<String> arr2 = new ArrayAdapter<>(this,  
  65.                 android.R.layout.simple_dropdown_item_1line,emailSufix);  
  66.         email.setAdapter(arr2);  
  67.   
  68.         Button bt = (Button)findViewById(R.id.bt);  
  69.         bt.setOnClickListener(new View.OnClickListener() {  
  70.             @Override  
  71.             public void onClick(View view) {  
  72.                 simple(view);  
  73.             }  
  74.         });  
  75.     }  
  76.   
  77.     public void simple(View source){  
  78.   
  79.         EditText user = (EditText)findViewById(R.id.user);  
  80.         EditText birthday = (EditText)findViewById(R.id.birthday);  
  81.         AutoCompleteTextView email = (AutoCompleteTextView)findViewById(R.id.email);  
  82.   
  83.         String users = user.getText().toString();  
  84.         String birthdays = birthday.getText().toString();  
  85.         String provinces = (String)spinner.getSelectedItem();  
  86.         String emails = email.getText().toString();  
  87.   
  88.         AlertDialog.Builder builder = new AlertDialog.Builder(this)         //创建  
  89.                 .setTitle("请确认以下信息")                    //标题  
  90.                 .setItems(new String[] {"用户名:"+users,"所在地区:"+provinces,"出生日期:"+birthdays,"Email:"+emails}, null);   //对话框内容  
  91.   
  92.         builder.setNegativeButton("确定"new DialogInterface.OnClickListener() {     //按钮  
  93.                     @Override  
  94.                     public void onClick(DialogInterface dialogInterface, int i) {  
  95.   
  96.                     }  
  97.                 });  
  98.         builder.setPositiveButton("取消"new DialogInterface.OnClickListener() {  
  99.                     @Override  
  100.                     public void onClick(DialogInterface dialogInterface, int i) {  
  101.   
  102.                     }  
  103.                 }).create().show();  
  104.   
  105.     }  
  106.   
  107. }  

activity_main.xml

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:tools="http://schemas.android.com/tools"  
  4.     android:id="@+id/activity_main"  
  5.     android:orientation="vertical"  
  6.     android:layout_width="match_parent"  
  7.     android:layout_height="match_parent"  
  8.     tools:context="com.example.bestone.test4_2.MainActivity">  
  9.   
  10.     <TableRow>  
  11.         <TextView  
  12.             android:layout_width="match_parent"  
  13.             android:layout_height="wrap_content"  
  14.             android:text="用户名:"  
  15.             android:textSize="16sp"  
  16.             />  
  17.         <EditText  
  18.             android:id="@+id/user"  
  19.             android:layout_width="match_parent"  
  20.             android:layout_height="wrap_content"  
  21.             />  
  22.     </TableRow>  
  23.   
  24.     <TableRow>  
  25.         <TextView  
  26.             android:layout_width="match_parent"  
  27.             android:layout_height="wrap_content"  
  28.             android:text="密码:"  
  29.             android:textSize="16sp"  
  30.             />  
  31.         <EditText  
  32.             android:id="@+id/password"  
  33.             android:inputType="numberPassword"  
  34.             android:layout_width="match_parent"  
  35.             android:layout_height="wrap_content"  
  36.             />  
  37.     </TableRow>  
  38.   
  39.     <TableRow>  
  40.         <TextView  
  41.             android:layout_width="match_parent"  
  42.             android:layout_height="wrap_content"  
  43.             android:text="所在地区:"  
  44.             android:textSize="16sp"  
  45.             />  
  46.         <Spinner  
  47.             android:id="@+id/spinner"  
  48.             android:layout_width="match_parent"  
  49.             android:layout_height="wrap_content"  
  50.             />  
  51.     </TableRow>  
  52.   
  53.     <TableRow>  
  54.         <TextView  
  55.             android:layout_width="match_parent"  
  56.             android:layout_height="wrap_content"  
  57.             android:text="出生日期:"  
  58.             android:textSize="16sp"  
  59.             />  
  60.         <EditText  
  61.             android:id="@+id/birthday"  
  62.             android:layout_width="match_parent"  
  63.             android:layout_height="wrap_content"  
  64.             />  
  65.     </TableRow>  
  66.   
  67.     <TableRow>  
  68.         <TextView  
  69.             android:layout_width="match_parent"  
  70.             android:layout_height="wrap_content"  
  71.             android:text="Email:"  
  72.             android:textSize="16sp"  
  73.             />  
  74.         <AutoCompleteTextView  
  75.             android:id="@+id/email"  
  76.             android:layout_width="match_parent"  
  77.             android:layout_height="wrap_content"  
  78.             android:completionThreshold="1"  
  79.             />  
  80.     </TableRow>  
  81.   
  82.     <Button  
  83.         android:id="@+id/bt"  
  84.         android:layout_width="match_parent"  
  85.         android:layout_height="wrap_content"  
  86.         android:text="注册"  
  87.         />  
  88. </TableLayout>  

效果图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值