Search This Blog

Tuesday, January 3, 2012

Date Picker

1. Start a new project by name DatePicker
2. Open res/layout/main.xml file and insert the following

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""/>

3. Open DatePicker.java and add the following members to the class:

    private TextView mDateDisplay;
    private Button mPickDate;
    private int mYear;
    private int mMonth;
    private int mDay;

    static final int DATE_DIALOG_ID = 0;

4. Add the following code for the onCreate() method:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // capture our View elements
        mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
        mPickDate = (Button) findViewById(R.id.pickDate);

        // add a click listener to the button
        mPickDate.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(DATE_DIALOG_ID);
            }
        });

        // get the current date
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

        // display the current date (this method is below)
        updateDisplay();
    }

5. Add the updateDisplay() method:
    // updates the date in the TextView
    private void updateDisplay() {
        mDateDisplay.setText(new StringBuilder()
        // Month is 0 based so add 1
        .append(mMonth + 1).append("-")
        .append(mDay).append("-")
        .append(mYear).append(" "));
    }


6. initialize a new DatePickerDialog.OnDateSetListener as a member of the DatePicker class:

    // the callback received when the user "sets" the date in the dialog
    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;
            updateDisplay();
         }
    };

7. Now add the onCreateDialog(int) callback method to the HelloDatePicker class:
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DATE_DIALOG_ID:
                return new DatePickerDialog(this,mDateSetListener, mYear, mMonth, mDay);
        }
        return null;
    }

No comments:

Post a Comment