From 028132f43d218831dcfa384a2fbfaa70dd866c44 Mon Sep 17 00:00:00 2001 From: shixianjie Date: Fri, 27 Sep 2024 17:52:30 +0800 Subject: [PATCH] MessageDialog --- .../java/com/hjx/parent/StuHomeworkActivity.java | 20 +++- .../hjx/parent/adapter/HomeworkListAdapter.java | 14 +++ .../com/hjx/parent/dialog/MsgConfirmDialog.java | 104 +++++++++++++++++++++ app/src/main/res/layout/dialog_message_confirm.xml | 77 +++++++++++++++ app/src/main/res/layout/item_homework_list.xml | 2 + 5 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java create mode 100644 app/src/main/res/layout/dialog_message_confirm.xml diff --git a/app/src/main/java/com/hjx/parent/StuHomeworkActivity.java b/app/src/main/java/com/hjx/parent/StuHomeworkActivity.java index f8f35e1..a682874 100644 --- a/app/src/main/java/com/hjx/parent/StuHomeworkActivity.java +++ b/app/src/main/java/com/hjx/parent/StuHomeworkActivity.java @@ -8,13 +8,13 @@ import android.widget.PopupWindow; import androidx.lifecycle.MutableLiveData; import com.google.gson.Gson; -import com.hjx.parent.adapter.HomeworkAdapter; import com.hjx.parent.adapter.HomeworkListAdapter; import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; import com.hjx.parent.databinding.PopupFilterFeedbackBinding; import com.hjx.parent.databinding.PopupFilterGradeBinding; import com.hjx.parent.databinding.PopupFilterSubjectBinding; import com.hjx.parent.databinding.PopupFilterTermBinding; +import com.hjx.parent.dialog.MsgConfirmDialog; import com.hjx.parent.rx.BaseRxActivity; import com.prws.common.bean.Student; import com.prws.common.net.NetWorks; @@ -32,6 +32,7 @@ public class StuHomeworkActivity extends BaseRxActivity showGradeFilter()); binding.ftTerm.setOnClickListener(v -> showTermFilter()); binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); + homeworkAdapter.deleteCall = data -> { + if (deleteDialog == null) { + deleteDialog = new MsgConfirmDialog.Builder(this) + .setMessage("确认要删除吗?一旦删除不可恢复") + .setPositive("暂不删除") + .setNegative("确定删除") + .build(); + } + deleteDialog.show(() -> { + // TODO Delete + return true; + }, null); + }; } @@ -95,7 +109,9 @@ public class StuHomeworkActivity extends BaseRxActivity { if (th != null) th.printStackTrace(); - Collections.sort(data); + if (data != null) { + Collections.sort(data); + } homeworkAdapter.setNewData(data); }); } diff --git a/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java b/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java index 05f2289..16ff5cb 100644 --- a/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java +++ b/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java @@ -8,10 +8,14 @@ import androidx.annotation.NonNull; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.hjx.parent.R; +import com.hjx.parent.function.Function0; +import com.hjx.parent.function.Function1; import com.prws.common.bean.homework.HomeworkList; public class HomeworkListAdapter extends BaseQuickAdapter { + public Function1 deleteCall; + public HomeworkListAdapter() { super(R.layout.item_homework_list); } @@ -51,5 +55,15 @@ public class HomeworkListAdapter extends BaseQuickAdapter { + if (deleteCall != null) deleteCall.invoke(homework); + }); + + View btnDetail = helper.getView(R.id.btnDetail); + btnDetail.setOnClickListener(v -> { + // TODO + }); } } diff --git a/app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java b/app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java new file mode 100644 index 0000000..7ca52bd --- /dev/null +++ b/app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java @@ -0,0 +1,104 @@ +package com.hjx.parent.dialog; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.hjx.parent.databinding.DialogMessageConfirmBinding; +import com.hjx.parent.function.Function10; + +public class MsgConfirmDialog extends BaseDialog{ + private CharSequence title, message, positive, negative; + private Function10 positiveClick, negativeClick; + + private MsgConfirmDialog(Builder builder) { + super(builder.context); + title = builder.title; + message = builder.message; + positive = builder.positive; + negative = builder.negative; + positiveClick = builder.positiveClick; + negativeClick = builder.negativeClick; + } + + @Override + public void initView() { + binding.tvTitle.setText(title); + binding.tvMessage.setText(message); + binding.btnPositive.setText(positive); + binding.btnNegative.setText(negative); + binding.btnPositive.setOnClickListener(v -> { + if (positiveClick != null) { + if (positiveClick.invoke()) dismiss(); + } else { + dismiss(); + } + }); + binding.btnNegative.setOnClickListener(v -> { + if (negativeClick != null) { + if (negativeClick.invoke()) dismiss(); + } else { + dismiss(); + } + }); + } + + public void show(Function10 positiveClick, Function10 negativeClick) { + this.positiveClick = positiveClick; + this.negativeClick = negativeClick; + super.show(); + } + + @NonNull + @Override + public DialogMessageConfirmBinding getBinding() { + return DialogMessageConfirmBinding.inflate(getLayoutInflater()); + } + + public static class Builder { + public Builder(Context context) { + this.context = context; + } + private Context context; + private CharSequence title = "温馨提示"; + private CharSequence message = ""; + private CharSequence positive = "确定"; + private CharSequence negative = "取消"; + private Function10 positiveClick = () -> true; + private Function10 negativeClick = () -> true; + + public Builder setTitle(CharSequence title) { + this.title = title; + return this; + } + + public Builder setMessage(CharSequence message) { + this.message = message; + return this; + } + + public Builder setPositive(CharSequence positive) { + this.positive = positive; + return this; + } + + public Builder setNegative(CharSequence negative) { + this.negative = negative; + return this; + } + + public Builder setPositiveClick(Function10 positiveClick) { + this.positiveClick = positiveClick; + return this; + } + + public Builder setNegativeClick(Function10 negativeClick) { + this.negativeClick = negativeClick; + return this; + } + + public MsgConfirmDialog build() { + return new MsgConfirmDialog(this); + } + } +} diff --git a/app/src/main/res/layout/dialog_message_confirm.xml b/app/src/main/res/layout/dialog_message_confirm.xml new file mode 100644 index 0000000..f23fe10 --- /dev/null +++ b/app/src/main/res/layout/dialog_message_confirm.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_homework_list.xml b/app/src/main/res/layout/item_homework_list.xml index 23b69ac..567f59d 100644 --- a/app/src/main/res/layout/item_homework_list.xml +++ b/app/src/main/res/layout/item_homework_list.xml @@ -67,6 +67,7 @@ android:layout_height="wrap_content" />