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

package com.example.bestone.test4_2;

import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    private Spinner spinner;
    private EditText birthday;
    private AutoCompleteTextView email;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        spinner = (Spinner)findViewById(R.id.spinner);    //获取界面布局中的Spinner组件
        String[] arr = {  "北京", "浙江", "天津", "河南","山东","上海"};
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_multiple_choice,arr
        );
        spinner.setAdapter(adapter);


        birthday = (EditText)findViewById(R.id.birthday);       //为EidtText点击事件绑定监听器
        birthday.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Calendar c = Calendar.getInstance();
                new DatePickerDialog(MainActivity.this,
                        new DatePickerDialog.OnDateSetListener(){
                            @Override
                            public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                                EditText show = (EditText)findViewById(R.id.birthday);
                                show.setText(i+"年"+(i1+1)+"月"+i2+"日");
                            }
                        }
                        ,c.get(Calendar.YEAR)
                        ,c.get(Calendar.MONTH)
                        ,c.get(Calendar.DAY_OF_MONTH)).show();
            }
        });

        email = (AutoCompleteTextView)findViewById(R.id.email);
       // String email = email.getText().toString();                 //输入数字自动匹配邮箱后缀暂为解决,以后会补充

        String[] emailSufix = new String[]{"@outlook.com","@gmail.com"};


        ArrayAdapter<String> arr2 = new ArrayAdapter<>(this,
                android.R.layout.simple_dropdown_item_1line,emailSufix);
        email.setAdapter(arr2);

        Button bt = (Button)findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                simple(view);
            }
        });
    }

    public void simple(View source){

        EditText user = (EditText)findViewById(R.id.user);
        EditText birthday = (EditText)findViewById(R.id.birthday);
        AutoCompleteTextView email = (AutoCompleteTextView)findViewById(R.id.email);

        String users = user.getText().toString();
        String birthdays = birthday.getText().toString();
        String provinces = (String)spinner.getSelectedItem();
        String emails = email.getText().toString();

        AlertDialog.Builder builder = new AlertDialog.Builder(this)         //创建
                .setTitle("请确认以下信息")                    //标题
                .setItems(new String[] {"用户名:"+users,"所在地区:"+provinces,"出生日期:"+birthdays,"Email:"+emails}, null);   //对话框内容

        builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {     //按钮
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                });
        builder.setPositiveButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                    }
                }).create().show();

    }

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.bestone.test4_2.MainActivity">

    <TableRow>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="用户名:"
            android:textSize="16sp"
            />
        <EditText
            android:id="@+id/user"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="密码:"
            android:textSize="16sp"
            />
        <EditText
            android:id="@+id/password"
            android:inputType="numberPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="所在地区:"
            android:textSize="16sp"
            />
        <Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="出生日期:"
            android:textSize="16sp"
            />
        <EditText
            android:id="@+id/birthday"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Email:"
            android:textSize="16sp"
            />
        <AutoCompleteTextView
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:completionThreshold="1"
            />
    </TableRow>

    <Button
        android:id="@+id/bt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"
        />
</TableLayout>

效果图:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值