2014-11-15 1 views
1

Я создал несколько номеров EditText динамически, используя цикл. Поэтому я создал несколько EditText с тем же именем. Я вызываю DatePickerDialog, когда я нажимаю EditText. Я могу выбрать дату и настройку. Как только он будет завершен, выбранная дата установит только последний файл EditText, который я создал.Android: Как установить значение DatePicker в EditText, который я создал несколько в цикле

Я хочу установить дату для всего EditText. Можно ли установить значение в EditText, который создан с тем же именем?

Это мой код.

for(int i =0;i<5;i++) 
{ 
estimate_closedate = new EditText(getActivity()); 
     estimate_closedate.setLayoutParams(params1); 
     estimate_closedate.setWidth(1000); 
     estimate_closedate.setHint("Estimated Close Date"); 
estimate_closedate.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       DatePickerDialog dpd = new DatePickerDialog(context, 
         mDateSetListener, myear, mmonth, mday); 
       dpd.show(); 
      } 
     }); 
} 

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     myear = year; 
     mmonth = monthOfYear + 1; 
     mday = dayOfMonth; 
     if (mmonth < 10) { 
      month = 0 + Integer.toString(mmonth); 
     } else { 
      month = Integer.toString(mmonth); 
     } 
     if (mday < 10) { 
      day = 0 + Integer.toString(mday); 
     } else { 
      day = Integer.toString(mday); 
     } 
     nextdate = (new StringBuilder().append(myear).append("-") 
       .append(month).append("-").append(day)).toString(); 
     estimate_closedate.setText(nextdate);   
     } 
    } 
}; 

ответ

0

Попробуйте это (см мой comments):

for(int i =0;i<5;i++) 
{ 
     EditText estimate_closedate = new EditText(getActivity()); //create new instance 
     estimate_closedate.setId(i); //set the id (0-4) 
     estimate_closedate.setLayoutParams(params1); 
     estimate_closedate.setWidth(1000); 
     estimate_closedate.setHint("Estimated Close Date"); 
     estimate_closedate.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       DatePickerDialog dpd = new DatePickerDialog(context, 
         mDateSetListener, myear, mmonth, mday); 
       dpd.show(); 
      } 
     }); 
} 

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     myear = year; 
     mmonth = monthOfYear + 1; 
     mday = dayOfMonth; 
     if (mmonth < 10) { 
      month = 0 + Integer.toString(mmonth); 
     } else { 
      month = Integer.toString(mmonth); 
     } 
     if (mday < 10) { 
      day = 0 + Integer.toString(mday); 
     } else { 
      day = Integer.toString(mday); 
     } 
     nextdate = (new StringBuilder().append(myear).append("-") 
       .append(month).append("-").append(day)).toString(); 
     //estimate_closedate.setText(nextdate); 
     for(int i = 0; i < 5; i++) 
     { 
      EditText estimate_closedate = (EditText) findViewbyId(i); //get the id previously set 
      estimate_closedate.setText(nextdate); 
     }   
     } 
    } 
}; 

Дело в setId при создании EditText и findViewbyId найти созданный EditText, используя for петлю.

+0

Здесь проблема в том, что если я устанавливаю значение для одного EditText, то оно применяется ко всем EditText. – user3764346

+0

@ user3764346 Вы можете использовать if-else в цикле 'for', который я создал. Не обижайтесь, но им здесь, чтобы помочь вам, а не кодовому для вас –