【发布时间】:2018-04-14 18:24:11
【问题描述】:
我有两个单独的班级。一个是我的可扩展回收视图,另一个是我的 datePickerDialog 类。我的可扩展子视图中有 3 个文本视图。
我试图从 DatePickerDialog 返回值,但它说该方法是只读的,当我试图将它重新分配给它之外的另一个变量时,并尝试将值返回给适配器..适配器只能在我第二次选择日期后才能读取它。 (在这种情况下,它显示了第一个日期)。有没有办法让我正确返回日期值或至少等待从选择器中检索到的值。
textview 显示了它,但我无法将它分配给数组。因此导致子视图失去它的价值,父崩溃。
适配器
@Override
public void onBindChildViewHolder(final NotisChildViewHolder notisChildViewHolder, int i, Object childObject) {
final NotisChild notisChild = (NotisChild) childObject;
notisChildViewHolder.mItem.setText(notisChild.getItem());
notisChildViewHolder.mDate.setText(notisChild.getDate());
notisChildViewHolder.mTime.setText(notisChild.getTime());
// todo: take value of time & date in childview.
notisChildViewHolder.mDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Utility.onDateSelected(notisChildViewHolder.mDate, notisChild.getDate(), mContext);
Log.d(TAG, "onClick: notisChildViewHolder.mDate "+ notisChildViewHolder.mDate.getText().toString());
notisChild.setDate(notisChildViewHolder.mDate.getText().toString());
}
});
}
datePicker 类
public static void onDateSelected(final TextView textView, String dateText, Context mContext) {
Log.d(TAG, "onDateSelected");
Date date = null;
final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
try {
if (dateText.equals(""))
date = new Date();
else
date = simpleDateFormat.parse(dateText);
} catch (Exception exp) {
// In case of expense initializa date with new Date
date = new Date();
}
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH); // calendar month 0-11
int day = calendar.get(Calendar.DATE);
// date picker initialization
DatePickerDialog datePicker = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
calendar.set(year, month, day);
String formattedDate = simpleDateFormat.format(calendar.getTime());
textView.setText(formattedDate);
}
}, year, month, day);
datePicker.show();
}
【问题讨论】:
-
只需将回调添加到您的日期选择器类。
标签: android