2014-11-18 2 views
1

У меня есть одно или несколько номеров EditText с тем же именем, которое создается динамически. Я создал этот EditText на основе размера таблицы требований, которую я получил с сервера. Теперь я вызываю DatePickerDialog, когда я нажимаю EditText. Итак, я хочу получить тег и на основе тега я хочу установить дату, которую я выбираю.Как настроить DatePickerDialog для получения тега?

Здесь я не могу использовать setId. Потому что я уже использовал это для CheckBox.

Так что если я сделаю снова, то я получу конфликт. Поэтому я хочу пойти с setTag. Тег будет установлен для каждого EditText, и когда я нажимаю onClick of EditText, тогда мне нужно получить тег. Мне также нужно получить тег в функции 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.

Если это была проблема, вам необходимо внести следующие изменения.

dateEditTextAray[i].setOnClickListener(new OnClickListener() { 

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

Вместо передачи контекста вы должны передать 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);   
    } 
} 
};