2014-11-15 61 views
1

我已經使用循環動態創建了多個EditText。所以我創建了多個具有相同名稱的EditText。當我點擊EditText時,我調用DatePickerDialog。我可以選擇日期和完成設置。一旦完成,選擇的日期只能設置爲我創建的最後一個EditText。Android:我如何在一個EditText中設置DatePicker的值,我在一個循環中創建了多個

我想設置所有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在創建EditTextfindViewbyId找到創建EditText,使用for循環。

+0

這裏的問題是,如果我設置一個EditText的值,那麼它適用於所有的EditText。 – user3764346

+0

@ user3764346您可以在我創建的for循環中使用if-else。沒有冒犯,但我即將在這裏幫助你,而不是爲你編碼 –

相關問題