2017-07-19 77 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循环的答案 –