gpt4 book ai didi

android - DatepickerDialog 与 LocalDate 而不是 Day Month Year

转载 作者:行者123 更新时间:2023-11-29 18:46:14 25 4
gpt4 key购买 nike

我正在尝试创建一个自定义 DatePickerDialog 类,它将触发 onDateSet 监听器回调,但不包含“日”、“月”和“年”值,我想重载构造函数以包含来自 java.time 的 LocalDate。我知道我可以将值相互转换,但出于学习目的,我想直接这样做。

我以前从未扩展/重载过 Android 类,所以我不确定要采取哪些步骤。
我试图创建一个扩展 DatePickerDialogCustomDatePickerDialog 类,但默认构造函数仍必须包含 super 构造函数,所以这对我没有真正帮助。

另一个想法是,我可以将 Android 类 (DatePickerDialog) 复制到我的本地应用程序中,更改其中的名称和构造函数,然后使用我的新本地类。问题是,我找不到 DatePickerDialog(或与此相关的任何类)的源代码。我也觉得这是一种解决问题的迂回方式。

更改扩展默认 android 类的自定义类的构造函数的最佳方法是什么?

最佳答案

类似(未测试)

public class CustomDatePickerDialog extends DatePickerDialog {

public static interface CustomOnDateSetListener {
void onDateSet(DatePicker view, LocalDate date);
}

public CustomDatePickerDialog(Context context,
CustomOnDateSetListener listener, LocalDate date) {
super(context, adaptListener(listener),
date.getYear(), date.getMonthValue() - 1, date.getDayOfMonth());
}

private static OnDateSetListener adaptListener(CustomOnDateSetListener customListener) {
return new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
customListener.onDateSet(view, LocalDate.of(year, month + 1, dayOfMonth);
}
}
}

}

最复杂的部分是自定义监听器。我正在为它声明一个新接口(interface)。我们需要将老式的 DatePickerDialog.OnDateSetListener 传递给父类(super class),因此在 adaptListener 中,我正在构建一个在调用时将调用转发给然后传递给构造函数的监听器的方法争论。

关于android - DatepickerDialog 与 LocalDate 而不是 Day Month Year,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51781268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com