我有一个button
和editTtext
,我想将今天的日期设置为edittext,然后用户可以使用按钮设置新日期并显示datepicker
以选择一个新日期。我无法在edittext
中设置当前日期的问题,我可以显示datepicker
和选择内容。我使用了BindingAdapter
和MVVM
。对于这种方法,任何指导或帮助我都是陌生的。
BindingAdapter:
@BindingAdapter("selectDate")
fun bindDateClicks(button: Button,mutableLiveData: MutableLiveData<String>) {
button.setOnClickListener {
selectDate(button.context,mutableLiveData)
}
}
fun selectDate(context: Context,mutableLiveData: MutableLiveData<String>) {
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val datePickerDialog = DatePickerDialog(context,
DatePickerDialog.OnDateSetListener {
view, year, monthOfYear, dayOfMonth ->
mutableLiveData.value = year.toString() + "-" + (monthOfYear + 1) + "-" + dayOfMonth.toString()
},year,month,day)
datePickerDialog.show()
}
按钮:
<Button
android:text="set Date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp"
app:selectDate="@{viewModel.currentDate}"
app:layout_constraintTop_toBottomOf="@+id/spinner3"
android:layout_marginTop="48dp"
app:layout_constraintHorizontal_bias="0.0"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.005"/>
View 模型:
val currentDate = MutableLiveData<String>()
最佳答案
在ViewModel中为日期创建实时数据或可观察字段(初始分配默认日期)。
日期选择器对话框应该是 Activity 级别或片段级别。
当日期更改表单日期选择器时,将日期更新到ViewModel中。在布局文件中定义Viewmodel。
关于android - 如何使用BindingAdapter和android Mvvm在edittext中显示日期并通过datepicker更新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57472499/