java - Manually input date in edittext -


i want manually (i.e. numeric keyboard) input date in dd-mm-yyyy format in edittext field. assign 3 integer variables, day, month, year calculation in such way first 2 characters (i.e. index 0, 1) day variable automatically add separator ("-' or "/") next 2 digit should month variable automated separator before , year. day , month should display 2 digit leading 0 (if necessary). if user enter 4-9 in day field @ index zero(0) automatically convert 2 digit , move month field, month 2-9 make 2 digit , move year. when input process completes move cursor next edittext field. apologize poor english. kind of appreciated. in advance.

you can use this. edge cases not handled. those.

 private static final char seperator = '-';      private void automatedateentry() {         dateedittext.addtextchangedlistener(new textwatcher() {               @override             public void beforetextchanged(charsequence charsequence, int i, int i1, int i2) {              }              @override             public void ontextchanged(charsequence charsequence, int i, int i1, int i2) {                 if (charsequence.length() > 10) {                     charsequence = charsequence.subsequence(0, 10);                     dateedittext.removetextchangedlistener(this);                     dateedittext.settext(charsequence);                     dateedittext.addtextchangedlistener(this);                 }             }              @override             public void aftertextchanged(editable editable) {                 string currtext = editable.tostring();                 if(currtext.isempty())                     return;                 int separatorcount = getocurrence(currtext, seperator);                  if (currtext.charat(currtext.length() - 1) == seperator) {                     return;                 }                 int lastseperatorpos = currtext.lastindexof(seperator);                 string previoustxt = null;                 if (lastseperatorpos > -1) {                     previoustxt = currtext.substring(0, lastseperatorpos + 1);                     log.d("curr text", currtext);                     currtext = currtext.substring(lastseperatorpos + 1);                 }                  if (!currtext.isempty()) {                     switch (separatorcount) {                         case 0:                             int date = integer.parseint(currtext);                             if (date < 0 || date > 31) {                                 dateedittext.seterror("enter proper date");                                 return;                             }                             if (currtext.length() == 2 || date >= 4) {                                 currtext = string.format(locale.getdefault(), "%02d", date);                                 currtext += seperator;                             }                             break;                         case 1: int month = integer.parseint(currtext);                             if (month < 0 || month > 31) {                                 dateedittext.seterror("enter proper month");                                 return;                             }                             if (currtext.length() == 2 || month >= 2) {                                 currtext = string.format(locale.getdefault(), "%02d", month);                                 currtext += seperator;                             }                             break;                         case 2: int year = integer.parseint(currtext);                             if (year < 0 ) {                                 dateedittext.seterror("enter proper year");                                 return;                             }                             break;                     }                 }                 if(previoustxt != null){                     currtext = previoustxt + currtext;                 }                 dateedittext.removetextchangedlistener(this);                 dateedittext.settext(currtext);                 int textlength = currtext.length();                 dateedittext.setselection(textlength, textlength);                 dateedittext.addtextchangedlistener(this);             }         });     }      private int getocurrence(string string, char ch) {         int count = 0;         int len = string.length();         (int = 0; < len; i++) {             if (string.charat(i) == ch)                 ++count;         }         return count;     } 

Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -