Работаем с Date Picker
Главная » Работаем с Date Picker

Поработаем с таким элементом Android интерфейса, как Date Picker. Он служит для выбора даты в приложении, в формате День - Месяц - Год. Разберем несложный пример использования Date Picker в Android приложении. Создадим приложение, в котором в элементе TextView при запуске программы будет отображаться текущая дата, установленная на устройстве. Также в программе будет кнопка, при нажатии на которую можно будет выбрать любую другую дату. При выборе другого значения даты, она отобразится в TextView и в виджете Date Picker, который также будет расположен на экране.

Начинаем с создания проекта, выбираем Blank Activity. Создадим интерфейс приложения. Для этого движемся в файл activity_main.xml и добавляем туда следующий код:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >
 <Button
 android:id="@+id/button"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Сменить дату"
 android:layout_gravity="center"/>
 <TextView
 android:id="@+id/PickDate"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Текущая дата (Месяц-День-Год): "
 android:layout_gravity="center"/>

 <TextView
 android:id="@+id/CurDate"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"/>
 <DatePicker
 android:id="@+id/PickedDate"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"/>
</LinearLayout>

Как уже было оговорено, кнопка Button используется для выбора даты, в TextView будет отображаться текущая или выбранная дата, виджет Date Picker также будет отображать устанавливаемую дату. 

Теперь открываем файл MainActivity.java. Здесь мы объявим все используемые элементы, переменные для использования значений дня, месяца и года, установим по умолчанию дату, актуальную на устройстве, а также добавим для кнопки возможность вызывать специального диалогового окна для выбора даты с помощью соответствующего интерфейса DialogInterface.OnClickListener DatePicker.OnDateChangedListener. Для реализации сказанного добавим в MainActivity.java:

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 MainActivity extends Activity {

 private DatePicker mDatePicker;
 private TextView mCurrentDate;
 private Button mChangeButton;
 private int day;
 private int month;
 private int year;

 static final int DATE_DIALOG_ID = 999;

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

 setCurrentDateOnView();
 addListenerOnButton();
 }

 //Отображаем текущее время на устройстве:
 public void setCurrentDateOnView() {

 //Инициализируем элементы TextView и DatePicker:
 mCurrentDate = (TextView) findViewById(R.id.CurDate);
 mDatePicker = (DatePicker) findViewById(R.id.PickedDate);

 //Связываемся с системным календарем и берем из него для нашего
 //приложения значения текущего года, месяца и дня:
 final Calendar calendar = Calendar.getInstance();
 year = calendar.get(Calendar.YEAR);
 month = calendar.get(Calendar.MONTH);
 day = calendar.get(Calendar.DAY_OF_MONTH);

 //Отображаем полученные данные в TextView:
 mCurrentDate.setText(new StringBuilder()
 .append(month + 1).append("-").append(day).append("-")
 .append(year).append(" "));

 //Применяем данные с календаря и к DatePicker:
 mDatePicker.init(year, month, day, null);

 }

 //Настраиваем с помощью нажатия на кнопку вызов выбора даты:

 public void addListenerOnButton() {
 mChangeButton = (Button) findViewById(R.id.button);
 mChangeButton.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:

 //Настраиваем на текущую дату:
 return new DatePickerDialog(this, datePickerListener,
 year, month,day);
 }
 return null;
 }
 //Делаем выбор желаемой даты:
 private DatePickerDialog.OnDateSetListener datePickerListener
 = new DatePickerDialog.OnDateSetListener() {

 public void onDateSet(DatePicker view, int selectedYear,int selectedMonth, int selectedDay) {
 year = selectedYear; month = selectedMonth; day = selectedDay;

 //Настраиваем установленную дату в TextView
 mCurrentDate.setText(new StringBuilder().append(month + 1)
 .append("-").append(day).append("-").append(year)
 .append(" "));

 //Применяем настройки даты также и на DatePicker:
 mDatePicker.init(year, month, day, null);
 }
 };
}

Вот так вот, теперь запускаем приложение и смотрим на его работоспособность:

Date Picker во всей красе

Категория: Уроки программирования | Просмотров: 1057 | Добавил: Oleg | Теги: работаем с датой, программирование Android, Основы, Date Picker | Рейтинг: 5.0/1
Всего комментариев: 0
avatar