2014-09-06 2 views
0

Я пытаюсь получить от пользователя дату и время, но когда ı добавлено поле даты и времени, ничего не говорится о том, как писать дату или время. На пейджере много вещей, для данных даты и времени из этих текстовых полей. Я беру эти данные и отправляю веб-службу. Поля должны выглядетьКак получить истинные данные из поля даты и времени, не делая выбор даты и времени

-/-/- HH:MM:SS 

ответ

0

я не получил вас, вы хотите спросить пользователя для времени и даты, и показать его в TextView или EditText? , и вы хотите наложить маску на текст, чтобы он выглядел lik/-/-/-? или вы хотите получить дату и время автоматически

EDIT

Если это о только показывая EditText в начале с shlashes вы просто можете сделать это оба пути

XML:

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="----/--/-" 
     android:id="@+id/et"/> 

Java:

EditText et = (EditText) findViewById(R.id.et); 
editText.setText(---/--/-); 
+0

нет нет просто получить данные от пользователя. Я буду искать put mask, будет полезно. Есть ли способ сделать с простым способом. Потому что я не хочу потерять производительность программы. – dodotu

+0

I Отредактировано с ответом –

+0

Я хочу, чтобы текст редактирования показывался разделенными блоками. – dodotu

0

Вы можете сделать это так:

объявить EditText

и добавить TextWatcher

TextWatcher tw = new TextWatcher() { 
    private String current = ""; 
    private String ddmmyyyy = "DDMMYYYY"; 
} 

, когда пользователь печатает

@Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     if (!s.toString().equals(current)) { 
      String clean = s.toString().replaceAll("[^\\d.]", ""); 
      String cleanC = current.replaceAll("[^\\d.]", ""); 

      int cl = clean.length(); 
      int sel = cl; 
      for (int i = 2; i <= cl && i < 6; i += 2) { 
       sel++; 
      } 
      //Fix for pressing delete next to a forward slash 
      if (clean.equals(cleanC)) sel--; 

      if (clean.length() < 8){ 
       clean = clean + ddmmyyyy.substring(clean.length()); 
      }else{ 
       //This part makes sure that when we finish entering numbers 
       //the date is correct, fixing it otherwise 
       int day = Integer.parseInt(clean.substring(0,2)); 
       int mon = Integer.parseInt(clean.substring(2,4)); 
       int year = Integer.parseInt(clean.substring(4,8)); 

       if(mon > 12) mon = 12; 
       cal.set(Calendar.MONTH, mon-1); 
       day = (day > cal.getActualMaximum(Calendar.DATE))? cal.getActualMaximum(Calendar.DATE):day; 
       year = (year<1900)?1900:(year>2100)?2100:year; 
       clean = String.format("%02d%02d%02d",day, mon, year); 
      } 

      clean = String.format("%s/%s/%s", clean.substring(0, 2), 
       clean.substring(2, 4), 
       clean.substring(4, 8)); 
      current = clean; 
      date.setText(current); 
      date.setSelection(sel < current.length() ? sel : current.length()); 
     } 
    } 

@Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

    @Override 
    public void afterTextChanged(Editable s) {} 
}; 
Смежные вопросы