Пример выбора даты в Android

Пример выбора даты в Android

В Android вы можете использовать класс «http://developer.android.com/reference/android/widget/DatePicker.html[android.widget.DatePicker]», чтобы отобразить компонент выбора даты, чтобы выбрать день, месяц и год в предопределенный пользовательский интерфейс.

В этом руководстве мы покажем вам, как визуализировать компонент выбора даты на текущей странице черезandroid.widget.DatePicker, а также в диалоговом окне черезandroid.app.DatePickerDialog. Кроме того, мы также покажем вам, как установить дату в компоненте выбора даты.

P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.

1. DatePicker

Откройте файл «res/layout/main.xml», добавьте средство выбора даты, метку и кнопку для демонстрации.

Файл: res / layout / main.xml




    

P.S The “DatePickerDialog” is declare in code, not XML.

2. Код код

Прочитайте комментарий к коду, он должен быть понятен.

Файл: MyAndroidAppActivity.java

package com.example.android;

import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class MyAndroidAppActivity extends Activity {

    private TextView tvDisplayDate;
    private DatePicker dpResult;
    private Button btnChangeDate;

    private int year;
    private int month;
    private int day;

    static final int DATE_DIALOG_ID = 999;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        setCurrentDateOnView();
        addListenerOnButton();

    }

    // display current date
    public void setCurrentDateOnView() {

        tvDisplayDate = (TextView) findViewById(R.id.tvDate);
        dpResult = (DatePicker) findViewById(R.id.dpResult);

        final Calendar c = Calendar.getInstance();
        year = c.get(Calendar.YEAR);
        month = c.get(Calendar.MONTH);
        day = c.get(Calendar.DAY_OF_MONTH);

        // set current date into textview
        tvDisplayDate.setText(new StringBuilder()
            // Month is 0 based, just add 1
            .append(month + 1).append("-").append(day).append("-")
            .append(year).append(" "));

        // set current date into datepicker
        dpResult.init(year, month, day, null);

    }

    public void addListenerOnButton() {

        btnChangeDate = (Button) findViewById(R.id.btnChangeDate);

        btnChangeDate.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                showDialog(DATE_DIALOG_ID);

            }

        });

    }

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
           // set date picker as current date
           return new DatePickerDialog(this, datePickerListener,
                         year, month,day);
        }
        return null;
    }

    private DatePickerDialog.OnDateSetListener datePickerListener
                = new DatePickerDialog.OnDateSetListener() {

        // when dialog box is closed, below method will be called.
        public void onDateSet(DatePicker view, int selectedYear,
                int selectedMonth, int selectedDay) {
            year = selectedYear;
            month = selectedMonth;
            day = selectedDay;

            // set selected date into textview
            tvDisplayDate.setText(new StringBuilder().append(month + 1)
               .append("-").append(day).append("-").append(year)
               .append(" "));

            // set selected date into datepicker also
            dpResult.init(year, month, day, null);

        }
    };

}

P.S The “DatePickerDialog” example above, is referenced from Google Android date picker example, с небольшими изменениями.

3. Demo

Запустите приложение.

1. Результат, «Выбор даты» и «Просмотр текста» установлены на текущую дату.

android datepicker demo1

2. Нажмите кнопку «Изменить дату», в диалоговом окне отобразится компонент выбора даты черезDatePickerDialog.

android datepicker demo2

3. Оба «выбора даты» и «просмотр текста» обновляются с выбранной датой.

android datepicker demo3

Скачать исходный код

Скачать -Android-DatePicker-Example.zip (16 КБ)