2017-07-19 72 views
1

我有我的應用程序中的多個DatePickers,我想單個方法設置多個TextView的日期選擇器而不是將Datepicker放到每個TextView,日期對話框似乎正確顯示,但更改得到更新只有最後一個項目。EditText上的DatePickerDialog點擊事件

這裏是我創建

public void Setdate(final EditText setdateEditview){ 

     setdateEditview.setInputType(InputType.TYPE_NULL); 
     setdateEditview.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       DatePickerDialog.show(); 
       Log.d ("ttt","herre we o"+setdateEditview); 
      } 


     }); 

     Calendar newCalendar = Calendar.getInstance(); 
     DatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

      @RequiresApi(api = Build.VERSION_CODES.N) 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       Log.d ("ttt","herre we o"+setdateEditview); 
       setdateEditview.setText(dateFormatter.format(newDate.getTime())); 
      } 

     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 

    } 

我打電話上面用這種方法....

mCustomerDueDateEditText = (EditText) findViewById(R.id.edit_CustommerDueDate); 
mForecastedDueDateEditText = (EditText) findViewById(R.id.edit_ForcastedDueDate); 
Setdate(mCustomerDueDateEditText); 
Setdate(mForecastedDueDateEditText); 

回答

0

更改方法簽名這個樣子,並遍歷它的方法,當你想要更新。

public void Setdate(final EditText... setdateEditviewList){ 

       setdateEditview.setInputType(InputType.TYPE_NULL); 
       setdateEditview.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         DatePickerDialog.show(); 
         Log.d ("ttt","herre we o"+setdateEditview); 
        } 


       }); 

       Calendar newCalendar = Calendar.getInstance(); 
       DatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

        @RequiresApi(api = Build.VERSION_CODES.N) 
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
         Calendar newDate = Calendar.getInstance(); 
         newDate.set(year, monthOfYear, dayOfMonth); 
         Log.d ("ttt","herre we o"+setdateEditview); 

       //loop through the EditText here 
       EditText et; 
       for(int = 0; i<setdateEditviewList.length; i++){ 
          et = setdateEditviewList[i]; 
          et.setText(dateFormatter.format(newDate.getTime())); 

      } 
        } 

       },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 

      } 

調用方法如下:

mCustomerDueDateEditText = (EditText) findViewById(R.id.edit_CustommerDueDate); 
mForecastedDueDateEditText = (EditText) findViewById(R.id.edit_ForcastedDueDate); 
Setdate(mCustomerDueDateEditText, mForecastedDueDateEditText); 
+0

感謝,從看到的問題 - >>爲(EditText上等:setdateEditviewList)......它說: 「對於」 不能用「的EditText運行'Type ... –

+0

我編輯了使用普通for循環的答案 –