Я пытаюсь создать выбор даты, динамически (где я не знаю точное число).Как обрабатывать динамически создаваемые датпикеры?
Я имел в виду этот учебник http://javapapers.com/android/android-datepicker/.
В моем коде я создаю дату сборщиков следующим образом: -
TableRow row = new TableRow(this);
row.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
edit = new EditText(this);
edit.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
edit.setHint("Tap to select "+input_desc[index]);
edit.setFocusable(false);
edit.setClickable(true);
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getSupportFragmentManager(), "DatePicker");
}
});
allElement_date.add(edit);
row.addView(edit);
table.addView(row);
Приведенный выше код вызывается неизвестное количество раз. Тогда у меня есть follwing код: -
@SuppressLint("ValidFragment")
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm+1, dd);
}
}
Однако, как вы можете видеть, что нет никакого способа отличить между различными кликами на EditText, чтобы установить их по-разному.
public void populateSetDate(int year, int month, int day)
{
}
Может кто-нибудь, пожалуйста, помогите мне, как определить, какой отредактированный текст был нажат, и установить их самостоятельно.
Заранее спасибо.
Ребята, вам нужна ваша помощь здесь. – Newbie
Вы можете передать ссылку на ваш EditText в конструкторе SelectDateFragment, а также передать это в методе populateSetDate: 'DialogFragment newFragment = новый SelectDateFragment (редактировать),' Или просто сохранить ссылку на индекс строки и принести EditText из таблицы при необходимости. Поскольку я не уверен, что это то, что вы собираетесь делать, я оставил его как комментарий вместо ответа. Пожалуйста, не стесняйтесь спрашивать более подробную информацию, если это подход, который вы ищете. – Zerga
@Zerga Да, я искал что-то вроде этого. Пожалуйста, предложите, какой из лучших вариантов вы бы упомянули. И не могли бы вы рассказать немного больше об этом. – Newbie