Commit 028132f43d218831dcfa384a2fbfaa70dd866c44

Authored by shixianjie
1 parent 1863fd36a1
Exists in master

MessageDialog

app/src/main/java/com/hjx/parent/StuHomeworkActivity.java
... ... @@ -8,13 +8,13 @@ import android.widget.PopupWindow;
8 8 import androidx.lifecycle.MutableLiveData;
9 9  
10 10 import com.google.gson.Gson;
11   -import com.hjx.parent.adapter.HomeworkAdapter;
12 11 import com.hjx.parent.adapter.HomeworkListAdapter;
13 12 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding;
14 13 import com.hjx.parent.databinding.PopupFilterFeedbackBinding;
15 14 import com.hjx.parent.databinding.PopupFilterGradeBinding;
16 15 import com.hjx.parent.databinding.PopupFilterSubjectBinding;
17 16 import com.hjx.parent.databinding.PopupFilterTermBinding;
  17 +import com.hjx.parent.dialog.MsgConfirmDialog;
18 18 import com.hjx.parent.rx.BaseRxActivity;
19 19 import com.prws.common.bean.Student;
20 20 import com.prws.common.net.NetWorks;
... ... @@ -32,6 +32,7 @@ public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkB
32 32 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter();
33 33  
34 34 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter;
  35 + MsgConfirmDialog deleteDialog;
35 36 State state = new State();
36 37  
37 38 private void handlerIntent() {
... ... @@ -59,6 +60,19 @@ public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkB
59 60 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
60 61 binding.ftTerm.setOnClickListener(v -> showTermFilter());
61 62 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
  63 + homeworkAdapter.deleteCall = data -> {
  64 + if (deleteDialog == null) {
  65 + deleteDialog = new MsgConfirmDialog.Builder(this)
  66 + .setMessage("确认要删除吗?一旦删除不可恢复")
  67 + .setPositive("暂不删除")
  68 + .setNegative("确定删除")
  69 + .build();
  70 + }
  71 + deleteDialog.show(() -> {
  72 + // TODO Delete
  73 + return true;
  74 + }, null);
  75 + };
62 76 }
63 77  
64 78  
... ... @@ -95,7 +109,9 @@ public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkB
95 109 .toList()
96 110 .subscribe((data, th) -> {
97 111 if (th != null) th.printStackTrace();
98   - Collections.sort(data);
  112 + if (data != null) {
  113 + Collections.sort(data);
  114 + }
99 115 homeworkAdapter.setNewData(data);
100 116 });
101 117 }
... ...
app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java
... ... @@ -8,10 +8,14 @@ import androidx.annotation.NonNull;
8 8 import com.chad.library.adapter.base.BaseQuickAdapter;
9 9 import com.chad.library.adapter.base.BaseViewHolder;
10 10 import com.hjx.parent.R;
  11 +import com.hjx.parent.function.Function0;
  12 +import com.hjx.parent.function.Function1;
11 13 import com.prws.common.bean.homework.HomeworkList;
12 14  
13 15 public class HomeworkListAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> {
14 16  
  17 + public Function1<HomeworkList> deleteCall;
  18 +
15 19 public HomeworkListAdapter() {
16 20 super(R.layout.item_homework_list);
17 21 }
... ... @@ -51,5 +55,15 @@ public class HomeworkListAdapter extends BaseQuickAdapter&lt;HomeworkList, BaseView
51 55 tvDate.setVisibility(View.GONE);
52 56 }
53 57 tvDate.setText(homework.getFormatTime());
  58 +
  59 + View btnDelete = helper.getView(R.id.btnDelete);
  60 + btnDelete.setOnClickListener(v -> {
  61 + if (deleteCall != null) deleteCall.invoke(homework);
  62 + });
  63 +
  64 + View btnDetail = helper.getView(R.id.btnDetail);
  65 + btnDetail.setOnClickListener(v -> {
  66 + // TODO
  67 + });
54 68 }
55 69 }
... ...
app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java
... ... @@ -0,0 +1,104 @@
  1 +package com.hjx.parent.dialog;
  2 +
  3 +import android.content.Context;
  4 +
  5 +import androidx.annotation.NonNull;
  6 +
  7 +import com.hjx.parent.databinding.DialogMessageConfirmBinding;
  8 +import com.hjx.parent.function.Function10;
  9 +
  10 +public class MsgConfirmDialog extends BaseDialog<DialogMessageConfirmBinding>{
  11 + private CharSequence title, message, positive, negative;
  12 + private Function10<Boolean> positiveClick, negativeClick;
  13 +
  14 + private MsgConfirmDialog(Builder builder) {
  15 + super(builder.context);
  16 + title = builder.title;
  17 + message = builder.message;
  18 + positive = builder.positive;
  19 + negative = builder.negative;
  20 + positiveClick = builder.positiveClick;
  21 + negativeClick = builder.negativeClick;
  22 + }
  23 +
  24 + @Override
  25 + public void initView() {
  26 + binding.tvTitle.setText(title);
  27 + binding.tvMessage.setText(message);
  28 + binding.btnPositive.setText(positive);
  29 + binding.btnNegative.setText(negative);
  30 + binding.btnPositive.setOnClickListener(v -> {
  31 + if (positiveClick != null) {
  32 + if (positiveClick.invoke()) dismiss();
  33 + } else {
  34 + dismiss();
  35 + }
  36 + });
  37 + binding.btnNegative.setOnClickListener(v -> {
  38 + if (negativeClick != null) {
  39 + if (negativeClick.invoke()) dismiss();
  40 + } else {
  41 + dismiss();
  42 + }
  43 + });
  44 + }
  45 +
  46 + public void show(Function10<Boolean> positiveClick, Function10<Boolean> negativeClick) {
  47 + this.positiveClick = positiveClick;
  48 + this.negativeClick = negativeClick;
  49 + super.show();
  50 + }
  51 +
  52 + @NonNull
  53 + @Override
  54 + public DialogMessageConfirmBinding getBinding() {
  55 + return DialogMessageConfirmBinding.inflate(getLayoutInflater());
  56 + }
  57 +
  58 + public static class Builder {
  59 + public Builder(Context context) {
  60 + this.context = context;
  61 + }
  62 + private Context context;
  63 + private CharSequence title = "温馨提示";
  64 + private CharSequence message = "";
  65 + private CharSequence positive = "确定";
  66 + private CharSequence negative = "取消";
  67 + private Function10<Boolean> positiveClick = () -> true;
  68 + private Function10<Boolean> negativeClick = () -> true;
  69 +
  70 + public Builder setTitle(CharSequence title) {
  71 + this.title = title;
  72 + return this;
  73 + }
  74 +
  75 + public Builder setMessage(CharSequence message) {
  76 + this.message = message;
  77 + return this;
  78 + }
  79 +
  80 + public Builder setPositive(CharSequence positive) {
  81 + this.positive = positive;
  82 + return this;
  83 + }
  84 +
  85 + public Builder setNegative(CharSequence negative) {
  86 + this.negative = negative;
  87 + return this;
  88 + }
  89 +
  90 + public Builder setPositiveClick(Function10<Boolean> positiveClick) {
  91 + this.positiveClick = positiveClick;
  92 + return this;
  93 + }
  94 +
  95 + public Builder setNegativeClick(Function10<Boolean> negativeClick) {
  96 + this.negativeClick = negativeClick;
  97 + return this;
  98 + }
  99 +
  100 + public MsgConfirmDialog build() {
  101 + return new MsgConfirmDialog(this);
  102 + }
  103 + }
  104 +}
... ...
app/src/main/res/layout/dialog_message_confirm.xml
... ... @@ -0,0 +1,77 @@
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<FrameLayout
  3 + xmlns:android="http://schemas.android.com/apk/res/android"
  4 + xmlns:app="http://schemas.android.com/apk/res-auto"
  5 + xmlns:tools="http://schemas.android.com/tools"
  6 + android:layout_width="match_parent"
  7 + android:layout_height="match_parent">
  8 +
  9 + <LinearLayout
  10 + android:orientation="vertical"
  11 + android:background="@drawable/shape_radius_10"
  12 + android:backgroundTint="@color/white"
  13 + android:layout_gravity="center"
  14 + android:layout_width="280dp"
  15 + android:layout_height="wrap_content">
  16 +
  17 + <TextView
  18 + android:id="@+id/tvTitle"
  19 + tools:text="温馨提示"
  20 + android:textSize="18sp"
  21 + android:textColor="#333"
  22 + android:textStyle="bold"
  23 + android:layout_gravity="center_horizontal"
  24 + android:layout_marginTop="20dp"
  25 + android:layout_width="wrap_content"
  26 + android:layout_height="wrap_content"/>
  27 +
  28 + <TextView
  29 + android:id="@+id/tvMessage"
  30 + tools:text="确认要删除吗?一旦删除不可恢复"
  31 + android:textSize="14sp"
  32 + android:textColor="#333"
  33 + android:gravity="center"
  34 + android:layout_marginHorizontal="15dp"
  35 + android:layout_marginTop="16dp"
  36 + android:layout_width="match_parent"
  37 + android:layout_height="wrap_content"/>
  38 + <View
  39 + android:background="#EEE"
  40 + android:layout_marginHorizontal="10dp"
  41 + android:layout_marginTop="26dp"
  42 + android:layout_width="match_parent"
  43 + android:layout_height="1dp"/>
  44 + <LinearLayout
  45 + android:orientation="horizontal"
  46 + android:weightSum="2"
  47 + android:layout_width="match_parent"
  48 + android:layout_height="44dp">
  49 + <TextView
  50 + android:id="@+id/btnNegative"
  51 + tools:text="取消"
  52 + android:textSize="17sp"
  53 + android:textColor="#999"
  54 + android:textStyle="bold"
  55 + android:gravity="center"
  56 + android:layout_weight="1"
  57 + android:layout_width="0dp"
  58 + android:layout_height="match_parent"/>
  59 + <View
  60 + android:background="#EEE"
  61 + android:layout_marginVertical="3dp"
  62 + android:layout_width="1dp"
  63 + android:layout_height="match_parent"/>
  64 + <TextView
  65 + android:id="@+id/btnPositive"
  66 + tools:text="确定"
  67 + android:textSize="17sp"
  68 + android:textColor="#1C90F3"
  69 + android:textStyle="bold"
  70 + android:gravity="center"
  71 + android:layout_weight="1"
  72 + android:layout_width="0dp"
  73 + android:layout_height="match_parent"/>
  74 + </LinearLayout>
  75 + </LinearLayout>
  76 +
  77 +</FrameLayout>
0 78 \ No newline at end of file
... ...
app/src/main/res/layout/item_homework_list.xml
... ... @@ -67,6 +67,7 @@
67 67 android:layout_height="wrap_content" />
68 68 <Space style="@style/empty_space"/>
69 69 <androidx.appcompat.widget.AppCompatTextView
  70 + android:id="@+id/btnDelete"
70 71 android:text="删除"
71 72 android:textSize="10sp"
72 73 android:textColor="#666"
... ... @@ -82,6 +83,7 @@
82 83 android:layout_width="1dp"
83 84 android:layout_height="10dp"/>
84 85 <androidx.appcompat.widget.AppCompatTextView
  86 + android:id="@+id/btnDetail"
85 87 android:text="详情"
86 88 android:textSize="10sp"
87 89 android:textColor="#666"
... ...