2014-11-18 1 views
1

동적으로 생성 된 동일한 이름의 EditText가 하나 이상 있습니다. 나는이 EditText를 서버에서 가져온 Requirement 테이블의 크기에 따라 만들었다. 이제 EditText를 클릭하면 DatePickerDialog가 호출됩니다. 그래서 나는 여기에 태그를 가져 가고 싶습니다. 태그를 기반으로 선택하고 싶은 날짜를 설정하고 싶습니다.태그를 가져 오기 위해 DatePickerDialog를 사용자 정의하려면 어떻게합니까?

여기서는 setId를 사용할 수 없습니다. 왜냐하면 이미 나는 그걸 Checkbox에 사용 했으니 까.

그래서 다시하면 충돌이 발생합니다. 그래서 나는 setTag와 함께 가고 싶다. 태그는 모든 EditText에 대해 설정되며 EditText의 onClick을 클릭하면 태그를 가져와야합니다. 또한 onDateSet 함수에서 태그를 가져와야합니다. 그래서 EditText의 위치를 ​​얻을 수 있습니다. 아무도 날 어떻게 DatePickerDialog을 사용자 정의 할 수있는 방법을 말해 줄래?

for(int i =0;i<require.size();i++) 
{ 
requirement = require.get(i); 
date1 = new EditText(getActivity()); 
date1.setLayoutParams(params1); 
date1.setWidth(1000); 
date1.setHint("Date"); 
String datetag=new String(); 
     datetag="rid" + requirement.r_id + "datetag"; 
     date1.setTag(datetag); 
date.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(); 
    date.setText(nextdate);   
    } 
} 
}; 

답변

1

처럼 배열에서 클릭 한 위치에 대한 변수 카운터를 만들 필요가 있다고 생각 적절한 EditText의 날짜.

이것이 문제인 경우 다음과 같이 변경해야합니다.

컨텍스트를 전달하는 대신 v.getContext()를 전달해야합니다. 이것은 당신의 문제를 해결할 것입니다.

1

나는 내가 올바르게 날짜 선택이 설정되지 않은 잡았다 경우 편집 텍스트의 배열이

int positionClicked; 
EditText[] dateEditTextAray = new EditText[require.size()]; 
for(int i =0;i<require.size();i++) 
{ 
final int j = i; 
requirement = require.get(i); 
dateEditTextAray[i] = new EditText(getActivity()); 
dateEditTextAray[i].setLayoutParams(params1); 
dateEditTextAray[i].setWidth(1000); 
    dateEditTextAray[i].setHint("Date"); 
//String datetag=new String(); 
    //  datetag="rid" + requirement.r_id + "datetag"; 
    // date1.setTag(datetag); 
    dateEditTextAray[i].setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      positionClicked = j; 
      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(); 
    dateEditTextAray[positionClicked].setText(nextdate);   
    } 
} 
}; 
관련 문제