How to set min-max age limit with datepicker android

后端 未结 1 745
说谎
说谎 2021-01-23 06:00

In my application I need to set the age limit between 7-18 years. I want to dispaly the date-picker with limited range of options.

Ho

相关标签:
1条回答
  • 2021-01-23 06:28

    After speanding so much time, finally I got the solution.

     @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        mDateDisplay = (TextView) findViewById(R.id.dateDisplay);
        mPickDate = (Button) findViewById(R.id.pickDate);
    
        mPickDate.setOnClickListener(this);
    
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);
    
        maxYear = mYear - 7;
        maxMonth = mMonth;
        maxDay = mDay;
    
        minYear = mYear - 18;
        minMonth = mMonth;
        minDay = mDay;
    
        // display the current date (this method is below)
        updateDisplay(maxYear, maxMonth, maxDay);
    
    }
    
    private void updateDisplay(int year, int month, int day) {
        // TODO Auto-generated method stub
        mDateDisplay.setText(new StringBuilder()
                // Month is 0 based so add 1
                .append(month + 1).append("-").append(day).append("-")
                .append(year).append(" "));
    
    }
    
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        showDialog(DATE_DIALOG_ID);
    
    }
    
    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();
    
    
    
            if (year > maxYear ||monthOfYear > maxMonth && year == maxYear||
                     dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth){
    
                view.updateDate(maxYear, maxMonth, maxDay);
                updateDisplay(maxYear, maxMonth, maxDay);
    
            }
            else if (year < minYear ||monthOfYear < minMonth && year == minYear||
                     dayOfMonth < minDay && year == minYear && monthOfYear == minMonth) {
    
                view.updateDate(minYear, minMonth, minDay);
                updateDisplay(minYear, minMonth, minDay);
            }
            else {
    
                view.updateDate(year, monthOfYear, dayOfMonth);
                updateDisplay(year, monthOfYear, dayOfMonth);
            } 
    
        }
    };
    
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
            return new DatePickerDialog(this, mDateSetListener, mYear - 7,
                    mMonth, mDay);
        }
        return null;
    }
     }
    
    0 讨论(0)
提交回复
热议问题