-1

I'm struggling for some days with some code. Many tries, see my other questions. Now they expect a ";" but I don't know why.

holder.valueLabel.setOnClickListener(view -> {
            if (item.value.equals(""))
                try {
                    String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
                    holder.valueLabel.setText(date);
                    mItems.get(position).value = date;
                    showDatePickerDialog(holder.valueLabel.getText().toString(), (datePicker, year, month, day) -> {
                        String dateInFormat = getDateInFormat(year, month, day);
                        holder.valueLabel.setText(dateInFormat);
                        mItems.get(position).value = dateInFormat;

                        (DialogInterface.BUTTON_NEGATIVE), "cancel", (DialogInterface.OnClickListener) (dialog, which) -> {
                            if (which == DialogInterface.BUTTON_NEGATIVE) {
                                mItems.get(position).value = "";
                            } else {
                                mItems.get(position).value = dateInFormat;
                            }
                            ----->}); <--------------

                    }).show();
                } catch (ParseException e) {
                    e.printStackTrace();
                }

            else {
                try {
                    showDatePickerDialog(holder.valueLabel.getText().toString(), (datePicker, year, month, day) -> {
                        String dateInFormat = getDateInFormat(year, month, day);
                        holder.valueLabel.setText(dateInFormat);
                        mItems.get(position).value = dateInFormat;
                    }).show();
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
});

ShowDatePickerDialog

private DatePickerDialog showDatePickerDialog(String date, DatePickerDialog.OnDateSetListener listener) throws ParseException {
    Calendar myCalendar = getDateFromFormat(date);
    return new DatePickerDialog(getContext(), R.style.AppTheme_DialogTheme, listener,
            myCalendar.get(Calendar.YEAR),
            myCalendar.get(Calendar.MONTH),
            myCalendar.get(Calendar.DAY_OF_MONTH)
    );

}
Ahmed Ashour
  • 5,179
  • 10
  • 35
  • 56
Haast
  • 19
  • 7

1 Answers1

0

You have not properly implement DatePickerDialog methods try below way resolve error what you are getting :

holder.valueLabel.setOnClickListener(view -> {
            if (item.value.equals(""))
                try {
                    String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
                    holder.valueLabel.setText(date);
                    mItems.get(position).value = date;
                    DatePickerDialog datePickerDialog = showDatePickerDialog(holder.valueLabel.getText().toString(), new DatePickerDialog.OnDateSetListener() {
                        @Override
                        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                            String dateInFormat = getDateInFormat(year, month, day);
                            holder.valueLabel.setText(dateInFormat);
                            mItems.get(position).value = dateInFormat;
                        }

                    });
                    datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "cancel", (dialog, which) -> {
                        holder.valueLabel.setText("");
                        mItems.get(position).value = "";
                    });
                    datePickerDialog.show();
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            else {
                try {
                    showDatePickerDialog(holder.valueLabel.getText().toString(), (datePicker, year, month, day) -> {
                        String dateInFormat = getDateInFormat(year, month, day);
                        holder.valueLabel.setText(dateInFormat);
                        mItems.get(position).value = dateInFormat;
                    }).show();
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        });
Haresh Chhelana
  • 24,720
  • 5
  • 57
  • 67
  • The code works fine. Thanks so much! In the debugger the cancel button give a response. But how can I clean the value? I filled in mItems.get(position).value = ""; Thats not the right way. Any suggestions?` – Haast Mar 31 '17 at 07:39
  • 1
    I fixed it, yes your solution was right. Thank you so much. works like a charm – Haast Mar 31 '17 at 07:44
  • if I open the calendar, and when I pressed the back button the field is filled. Is that possible to solve? It must clean. – Haast Mar 31 '17 at 10:01