Commit 028132f43d218831dcfa384a2fbfaa70dd866c44
1 parent
1863fd36a1
Exists in
master
MessageDialog
Showing
5 changed files
with
215 additions
and
2 deletions
Show diff stats
app/src/main/java/com/hjx/parent/StuHomeworkActivity.java
1 | package com.hjx.parent; | 1 | package com.hjx.parent; |
2 | 2 | ||
3 | import android.annotation.SuppressLint; | 3 | import android.annotation.SuppressLint; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.widget.LinearLayout; | 5 | import android.widget.LinearLayout; |
6 | import android.widget.PopupWindow; | 6 | import android.widget.PopupWindow; |
7 | 7 | ||
8 | import androidx.lifecycle.MutableLiveData; | 8 | import androidx.lifecycle.MutableLiveData; |
9 | 9 | ||
10 | import com.google.gson.Gson; | 10 | import com.google.gson.Gson; |
11 | import com.hjx.parent.adapter.HomeworkAdapter; | ||
12 | import com.hjx.parent.adapter.HomeworkListAdapter; | 11 | import com.hjx.parent.adapter.HomeworkListAdapter; |
13 | import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; | 12 | import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; |
14 | import com.hjx.parent.databinding.PopupFilterFeedbackBinding; | 13 | import com.hjx.parent.databinding.PopupFilterFeedbackBinding; |
15 | import com.hjx.parent.databinding.PopupFilterGradeBinding; | 14 | import com.hjx.parent.databinding.PopupFilterGradeBinding; |
16 | import com.hjx.parent.databinding.PopupFilterSubjectBinding; | 15 | import com.hjx.parent.databinding.PopupFilterSubjectBinding; |
17 | import com.hjx.parent.databinding.PopupFilterTermBinding; | 16 | import com.hjx.parent.databinding.PopupFilterTermBinding; |
17 | import com.hjx.parent.dialog.MsgConfirmDialog; | ||
18 | import com.hjx.parent.rx.BaseRxActivity; | 18 | import com.hjx.parent.rx.BaseRxActivity; |
19 | import com.prws.common.bean.Student; | 19 | import com.prws.common.bean.Student; |
20 | import com.prws.common.net.NetWorks; | 20 | import com.prws.common.net.NetWorks; |
21 | import com.prws.common.utils.SharedPreferencesUtil; | 21 | import com.prws.common.utils.SharedPreferencesUtil; |
22 | import com.trello.rxlifecycle2.android.RxLifecycleAndroid; | 22 | import com.trello.rxlifecycle2.android.RxLifecycleAndroid; |
23 | 23 | ||
24 | import java.util.Collections; | 24 | import java.util.Collections; |
25 | 25 | ||
26 | import io.reactivex.Observable; | 26 | import io.reactivex.Observable; |
27 | import io.reactivex.android.schedulers.AndroidSchedulers; | 27 | import io.reactivex.android.schedulers.AndroidSchedulers; |
28 | import io.reactivex.schedulers.Schedulers; | 28 | import io.reactivex.schedulers.Schedulers; |
29 | 29 | ||
30 | public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { | 30 | public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { |
31 | 31 | ||
32 | private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); | 32 | private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); |
33 | 33 | ||
34 | PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; | 34 | PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; |
35 | MsgConfirmDialog deleteDialog; | ||
35 | State state = new State(); | 36 | State state = new State(); |
36 | 37 | ||
37 | private void handlerIntent() { | 38 | private void handlerIntent() { |
38 | String json = getIntent().getStringExtra("studentJson"); | 39 | String json = getIntent().getStringExtra("studentJson"); |
39 | if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); | 40 | if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); |
40 | try { state.student = new Gson().fromJson(json, Student.class); } | 41 | try { state.student = new Gson().fromJson(json, Student.class); } |
41 | catch (Throwable t) { t.printStackTrace(); } | 42 | catch (Throwable t) { t.printStackTrace(); } |
42 | } | 43 | } |
43 | 44 | ||
44 | @SuppressLint("SetTextI18n") | 45 | @SuppressLint("SetTextI18n") |
45 | @Override | 46 | @Override |
46 | public void initView(Bundle savedInstanceState) { | 47 | public void initView(Bundle savedInstanceState) { |
47 | handlerIntent(); | 48 | handlerIntent(); |
48 | if (state.student == null) { | 49 | if (state.student == null) { |
49 | finish(); | 50 | finish(); |
50 | return; | 51 | return; |
51 | } | 52 | } |
52 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); | 53 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); |
53 | binding.tvTitle.setText(state.student.stuName + "的全部作业"); | 54 | binding.tvTitle.setText(state.student.stuName + "的全部作业"); |
54 | 55 | ||
55 | binding.recyclerView.setAdapter(homeworkAdapter); | 56 | binding.recyclerView.setAdapter(homeworkAdapter); |
56 | getHomework(); | 57 | getHomework(); |
57 | 58 | ||
58 | binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); | 59 | binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); |
59 | binding.ftGrade.setOnClickListener(v -> showGradeFilter()); | 60 | binding.ftGrade.setOnClickListener(v -> showGradeFilter()); |
60 | binding.ftTerm.setOnClickListener(v -> showTermFilter()); | 61 | binding.ftTerm.setOnClickListener(v -> showTermFilter()); |
61 | binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); | 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 | ||
65 | @SuppressLint("CheckResult") | 79 | @SuppressLint("CheckResult") |
66 | protected void getHomework() { | 80 | protected void getHomework() { |
67 | NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) | 81 | NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) |
68 | .subscribeOn(Schedulers.io()) | 82 | .subscribeOn(Schedulers.io()) |
69 | .observeOn(AndroidSchedulers.mainThread()) | 83 | .observeOn(AndroidSchedulers.mainThread()) |
70 | .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) | 84 | .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) |
71 | .toObservable() | 85 | .toObservable() |
72 | .flatMap(response -> Observable.fromIterable(response.getData())) | 86 | .flatMap(response -> Observable.fromIterable(response.getData())) |
73 | // 过滤 | 87 | // 过滤 |
74 | .filter(data -> { // 学科 | 88 | .filter(data -> { // 学科 |
75 | String subject = state.subject.getValue(); | 89 | String subject = state.subject.getValue(); |
76 | if (subject == null || subject.isEmpty()) return true; | 90 | if (subject == null || subject.isEmpty()) return true; |
77 | else return subject.equals(data.getSubject()); | 91 | else return subject.equals(data.getSubject()); |
78 | }) | 92 | }) |
79 | .filter(data -> { // 年级 | 93 | .filter(data -> { // 年级 |
80 | String grade = state.grade.getValue(); | 94 | String grade = state.grade.getValue(); |
81 | if (grade == null || grade.isEmpty()) return true; | 95 | if (grade == null || grade.isEmpty()) return true; |
82 | else return grade.equals(data.getGrade()); | 96 | else return grade.equals(data.getGrade()); |
83 | }) | 97 | }) |
84 | .filter(data -> { // 学期 | 98 | .filter(data -> { // 学期 |
85 | String term = state.term.getValue(); | 99 | String term = state.term.getValue(); |
86 | if (term == null || term.isEmpty()) return true; | 100 | if (term == null || term.isEmpty()) return true; |
87 | else return term.equals(data.getTerm()); | 101 | else return term.equals(data.getTerm()); |
88 | }) | 102 | }) |
89 | .filter(data -> { // 反馈 | 103 | .filter(data -> { // 反馈 |
90 | Integer feedback = state.feedback.getValue(); | 104 | Integer feedback = state.feedback.getValue(); |
91 | if (feedback == null || feedback == 0) return true; | 105 | if (feedback == null || feedback == 0) return true; |
92 | else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); | 106 | else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); |
93 | }) | 107 | }) |
94 | // 过滤完成, 收集 | 108 | // 过滤完成, 收集 |
95 | .toList() | 109 | .toList() |
96 | .subscribe((data, th) -> { | 110 | .subscribe((data, th) -> { |
97 | if (th != null) th.printStackTrace(); | 111 | if (th != null) th.printStackTrace(); |
98 | Collections.sort(data); | 112 | if (data != null) { |
113 | Collections.sort(data); | ||
114 | } | ||
99 | homeworkAdapter.setNewData(data); | 115 | homeworkAdapter.setNewData(data); |
100 | }); | 116 | }); |
101 | } | 117 | } |
102 | 118 | ||
103 | private void showSubjectFilter() { | 119 | private void showSubjectFilter() { |
104 | if (subjectFilter == null) { | 120 | if (subjectFilter == null) { |
105 | PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); | 121 | PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); |
106 | db.setLifecycleOwner(this); | 122 | db.setLifecycleOwner(this); |
107 | db.setState(state); | 123 | db.setState(state); |
108 | db.bg.setOnClickListener(v -> subjectFilter.dismiss()); | 124 | db.bg.setOnClickListener(v -> subjectFilter.dismiss()); |
109 | subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 125 | subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
110 | subjectFilter.setOutsideTouchable(true); | 126 | subjectFilter.setOutsideTouchable(true); |
111 | subjectFilter.setOnDismissListener(this::getHomework); | 127 | subjectFilter.setOnDismissListener(this::getHomework); |
112 | } | 128 | } |
113 | subjectFilter.showAsDropDown(binding.anchorView); | 129 | subjectFilter.showAsDropDown(binding.anchorView); |
114 | } | 130 | } |
115 | 131 | ||
116 | private void showGradeFilter() { | 132 | private void showGradeFilter() { |
117 | if (gradeFilter == null) { | 133 | if (gradeFilter == null) { |
118 | PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); | 134 | PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); |
119 | db.setLifecycleOwner(this); | 135 | db.setLifecycleOwner(this); |
120 | db.setState(state); | 136 | db.setState(state); |
121 | db.bg.setOnClickListener(v -> gradeFilter.dismiss()); | 137 | db.bg.setOnClickListener(v -> gradeFilter.dismiss()); |
122 | gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 138 | gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
123 | gradeFilter.setOutsideTouchable(true); | 139 | gradeFilter.setOutsideTouchable(true); |
124 | gradeFilter.setOnDismissListener(this::getHomework); | 140 | gradeFilter.setOnDismissListener(this::getHomework); |
125 | } | 141 | } |
126 | gradeFilter.showAsDropDown(binding.anchorView); | 142 | gradeFilter.showAsDropDown(binding.anchorView); |
127 | } | 143 | } |
128 | 144 | ||
129 | private void showTermFilter() { | 145 | private void showTermFilter() { |
130 | if (termFilter == null) { | 146 | if (termFilter == null) { |
131 | PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); | 147 | PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); |
132 | db.setLifecycleOwner(this); | 148 | db.setLifecycleOwner(this); |
133 | db.setState(state); | 149 | db.setState(state); |
134 | db.bg.setOnClickListener(v -> termFilter.dismiss()); | 150 | db.bg.setOnClickListener(v -> termFilter.dismiss()); |
135 | termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 151 | termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
136 | termFilter.setOutsideTouchable(true); | 152 | termFilter.setOutsideTouchable(true); |
137 | termFilter.setOnDismissListener(this::getHomework); | 153 | termFilter.setOnDismissListener(this::getHomework); |
138 | } | 154 | } |
139 | termFilter.showAsDropDown(binding.anchorView); | 155 | termFilter.showAsDropDown(binding.anchorView); |
140 | } | 156 | } |
141 | 157 | ||
142 | private void showFeedbackFilter() { | 158 | private void showFeedbackFilter() { |
143 | if (feedbackFilter == null) { | 159 | if (feedbackFilter == null) { |
144 | PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); | 160 | PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); |
145 | db.setLifecycleOwner(this); | 161 | db.setLifecycleOwner(this); |
146 | db.setState(state); | 162 | db.setState(state); |
147 | db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); | 163 | db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); |
148 | feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 164 | feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
149 | feedbackFilter.setOutsideTouchable(true); | 165 | feedbackFilter.setOutsideTouchable(true); |
150 | feedbackFilter.setOnDismissListener(this::getHomework); | 166 | feedbackFilter.setOnDismissListener(this::getHomework); |
151 | } | 167 | } |
152 | feedbackFilter.showAsDropDown(binding.anchorView); | 168 | feedbackFilter.showAsDropDown(binding.anchorView); |
153 | } | 169 | } |
154 | 170 | ||
155 | @Override | 171 | @Override |
156 | protected ActivityStudentHomeworkBinding getViewBinding() { | 172 | protected ActivityStudentHomeworkBinding getViewBinding() { |
157 | return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); | 173 | return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); |
158 | } | 174 | } |
159 | 175 | ||
160 | public static class State { | 176 | public static class State { |
161 | public Student student; | 177 | public Student student; |
162 | 178 | ||
163 | public MutableLiveData<String> subject = new MutableLiveData<>(""); | 179 | public MutableLiveData<String> subject = new MutableLiveData<>(""); |
164 | public void setSubject(String value) { | 180 | public void setSubject(String value) { |
165 | subject.setValue(value); | 181 | subject.setValue(value); |
166 | } | 182 | } |
167 | 183 | ||
168 | public MutableLiveData<String> grade = new MutableLiveData<>(""); | 184 | public MutableLiveData<String> grade = new MutableLiveData<>(""); |
169 | public void setGrade(String value) { | 185 | public void setGrade(String value) { |
170 | grade.setValue(value); | 186 | grade.setValue(value); |
171 | } | 187 | } |
172 | 188 | ||
173 | public MutableLiveData<String> term = new MutableLiveData<>(""); | 189 | public MutableLiveData<String> term = new MutableLiveData<>(""); |
174 | public void setTerm(String value) { | 190 | public void setTerm(String value) { |
175 | term.setValue(value); | 191 | term.setValue(value); |
176 | } | 192 | } |
177 | 193 | ||
178 | //0:全部, 1: 已反馈, 2:未反馈 | 194 | //0:全部, 1: 已反馈, 2:未反馈 |
179 | public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); | 195 | public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); |
180 | public void setFeedback(int value) { | 196 | public void setFeedback(int value) { |
181 | feedback.setValue(value); | 197 | feedback.setValue(value); |
182 | } | 198 | } |
183 | } | 199 | } |
184 | } | 200 | } |
app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java
1 | package com.hjx.parent.adapter; | 1 | package com.hjx.parent.adapter; |
2 | 2 | ||
3 | import android.view.View; | 3 | import android.view.View; |
4 | import android.widget.TextView; | 4 | import android.widget.TextView; |
5 | 5 | ||
6 | import androidx.annotation.NonNull; | 6 | import androidx.annotation.NonNull; |
7 | 7 | ||
8 | import com.chad.library.adapter.base.BaseQuickAdapter; | 8 | import com.chad.library.adapter.base.BaseQuickAdapter; |
9 | import com.chad.library.adapter.base.BaseViewHolder; | 9 | import com.chad.library.adapter.base.BaseViewHolder; |
10 | import com.hjx.parent.R; | 10 | import com.hjx.parent.R; |
11 | import com.hjx.parent.function.Function0; | ||
12 | import com.hjx.parent.function.Function1; | ||
11 | import com.prws.common.bean.homework.HomeworkList; | 13 | import com.prws.common.bean.homework.HomeworkList; |
12 | 14 | ||
13 | public class HomeworkListAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> { | 15 | public class HomeworkListAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> { |
14 | 16 | ||
17 | public Function1<HomeworkList> deleteCall; | ||
18 | |||
15 | public HomeworkListAdapter() { | 19 | public HomeworkListAdapter() { |
16 | super(R.layout.item_homework_list); | 20 | super(R.layout.item_homework_list); |
17 | } | 21 | } |
18 | 22 | ||
19 | @Override | 23 | @Override |
20 | protected void convert(@NonNull BaseViewHolder helper, HomeworkList homework) { | 24 | protected void convert(@NonNull BaseViewHolder helper, HomeworkList homework) { |
21 | helper.setGone(R.id.tvFlag, homework.getRight() != null); | 25 | helper.setGone(R.id.tvFlag, homework.getRight() != null); |
22 | helper.setText(R.id.tvName, homework.getName()); | 26 | helper.setText(R.id.tvName, homework.getName()); |
23 | helper.setText(R.id.tvGrade, homework.getGrade() + "-" + homework.getTerm()); | 27 | helper.setText(R.id.tvGrade, homework.getGrade() + "-" + homework.getTerm()); |
24 | int subjectImg; | 28 | int subjectImg; |
25 | switch (homework.getSubject()) { | 29 | switch (homework.getSubject()) { |
26 | case "语文": | 30 | case "语文": |
27 | subjectImg = R.drawable.ic_chinese; | 31 | subjectImg = R.drawable.ic_chinese; |
28 | break; | 32 | break; |
29 | case "英语": | 33 | case "英语": |
30 | subjectImg = R.drawable.ic_english; | 34 | subjectImg = R.drawable.ic_english; |
31 | break; | 35 | break; |
32 | case "物理": | 36 | case "物理": |
33 | subjectImg = R.drawable.ic_physics; | 37 | subjectImg = R.drawable.ic_physics; |
34 | break; | 38 | break; |
35 | case "化学": | 39 | case "化学": |
36 | subjectImg = R.drawable.ic_chemistry; | 40 | subjectImg = R.drawable.ic_chemistry; |
37 | break; | 41 | break; |
38 | case "数学": | 42 | case "数学": |
39 | default: | 43 | default: |
40 | subjectImg = R.drawable.ic_math; | 44 | subjectImg = R.drawable.ic_math; |
41 | } | 45 | } |
42 | helper.setImageResource(R.id.ivSubject, subjectImg); | 46 | helper.setImageResource(R.id.ivSubject, subjectImg); |
43 | 47 | ||
44 | TextView tvDate = helper.getView(R.id.tvDate); | 48 | TextView tvDate = helper.getView(R.id.tvDate); |
45 | int index = getData().indexOf(homework); | 49 | int index = getData().indexOf(homework); |
46 | if (index == 0) { | 50 | if (index == 0) { |
47 | tvDate.setVisibility(View.VISIBLE); | 51 | tvDate.setVisibility(View.VISIBLE); |
48 | } else if (!homework.getFormatTime().equals(getData().get(index - 1).getFormatTime())) { | 52 | } else if (!homework.getFormatTime().equals(getData().get(index - 1).getFormatTime())) { |
49 | tvDate.setVisibility(View.VISIBLE); | 53 | tvDate.setVisibility(View.VISIBLE); |
50 | } else { | 54 | } else { |
51 | tvDate.setVisibility(View.GONE); | 55 | tvDate.setVisibility(View.GONE); |
52 | } | 56 | } |
53 | tvDate.setText(homework.getFormatTime()); | 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 | } |
56 | 70 |
app/src/main/java/com/hjx/parent/dialog/MsgConfirmDialog.java
File was created | 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 | } | ||
105 |
app/src/main/res/layout/dialog_message_confirm.xml
File was created | 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> |
app/src/main/res/layout/item_homework_list.xml
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <LinearLayout | 2 | <LinearLayout |
3 | xmlns:android="http://schemas.android.com/apk/res/android" | 3 | xmlns:android="http://schemas.android.com/apk/res/android" |
4 | xmlns:app="http://schemas.android.com/apk/res-auto" | 4 | xmlns:app="http://schemas.android.com/apk/res-auto" |
5 | xmlns:tools="http://schemas.android.com/tools" | 5 | xmlns:tools="http://schemas.android.com/tools" |
6 | android:orientation="vertical" | 6 | android:orientation="vertical" |
7 | android:paddingHorizontal="10dp" | 7 | android:paddingHorizontal="10dp" |
8 | android:layout_marginVertical="8dp" | 8 | android:layout_marginVertical="8dp" |
9 | android:layout_width="match_parent" | 9 | android:layout_width="match_parent" |
10 | android:layout_height="wrap_content" | 10 | android:layout_height="wrap_content" |
11 | tools:ignore="SmallSp,HardcodedText"> | 11 | tools:ignore="SmallSp,HardcodedText"> |
12 | 12 | ||
13 | <TextView | 13 | <TextView |
14 | android:id="@+id/tvDate" | 14 | android:id="@+id/tvDate" |
15 | android:visibility="gone" | 15 | android:visibility="gone" |
16 | tools:visibility="visible" | 16 | tools:visibility="visible" |
17 | tools:text="2024-09-25" | 17 | tools:text="2024-09-25" |
18 | android:textSize="12sp" | 18 | android:textSize="12sp" |
19 | android:textColor="#999" | 19 | android:textColor="#999" |
20 | android:layout_marginBottom="15dp" | 20 | android:layout_marginBottom="15dp" |
21 | android:layout_width="wrap_content" | 21 | android:layout_width="wrap_content" |
22 | android:layout_height="wrap_content"/> | 22 | android:layout_height="wrap_content"/> |
23 | 23 | ||
24 | <FrameLayout | 24 | <FrameLayout |
25 | android:background="@drawable/shape_radius_10" | 25 | android:background="@drawable/shape_radius_10" |
26 | android:backgroundTint="@color/white" | 26 | android:backgroundTint="@color/white" |
27 | android:layout_width="match_parent" | 27 | android:layout_width="match_parent" |
28 | android:layout_height="75dp"> | 28 | android:layout_height="75dp"> |
29 | <LinearLayout | 29 | <LinearLayout |
30 | android:orientation="horizontal" | 30 | android:orientation="horizontal" |
31 | android:gravity="center_vertical" | 31 | android:gravity="center_vertical" |
32 | android:layout_width="match_parent" | 32 | android:layout_width="match_parent" |
33 | android:layout_height="match_parent"> | 33 | android:layout_height="match_parent"> |
34 | <ImageView | 34 | <ImageView |
35 | android:id="@+id/ivSubject" | 35 | android:id="@+id/ivSubject" |
36 | tools:src="@drawable/ic_math" | 36 | tools:src="@drawable/ic_math" |
37 | android:layout_marginStart="10dp" | 37 | android:layout_marginStart="10dp" |
38 | android:layout_width="44dp" | 38 | android:layout_width="44dp" |
39 | android:layout_height="56dp" | 39 | android:layout_height="56dp" |
40 | android:importantForAccessibility="no" /> | 40 | android:importantForAccessibility="no" /> |
41 | <LinearLayout | 41 | <LinearLayout |
42 | android:orientation="vertical" | 42 | android:orientation="vertical" |
43 | android:layout_marginStart="14dp" | 43 | android:layout_marginStart="14dp" |
44 | android:layout_marginEnd="10dp" | 44 | android:layout_marginEnd="10dp" |
45 | android:layout_marginVertical="16dp" | 45 | android:layout_marginVertical="16dp" |
46 | android:layout_width="match_parent" | 46 | android:layout_width="match_parent" |
47 | android:layout_height="match_parent"> | 47 | android:layout_height="match_parent"> |
48 | <TextView | 48 | <TextView |
49 | android:id="@+id/tvName" | 49 | android:id="@+id/tvName" |
50 | tools:text="作业名称" | 50 | tools:text="作业名称" |
51 | android:textSize="13sp" | 51 | android:textSize="13sp" |
52 | android:textColor="#333" | 52 | android:textColor="#333" |
53 | android:layout_width="wrap_content" | 53 | android:layout_width="wrap_content" |
54 | android:layout_height="wrap_content"/> | 54 | android:layout_height="wrap_content"/> |
55 | <Space style="@style/empty_space"/> | 55 | <Space style="@style/empty_space"/> |
56 | <LinearLayout | 56 | <LinearLayout |
57 | android:orientation="horizontal" | 57 | android:orientation="horizontal" |
58 | android:gravity="center_vertical" | 58 | android:gravity="center_vertical" |
59 | android:layout_width="match_parent" | 59 | android:layout_width="match_parent" |
60 | android:layout_height="wrap_content"> | 60 | android:layout_height="wrap_content"> |
61 | <TextView | 61 | <TextView |
62 | android:id="@+id/tvGrade" | 62 | android:id="@+id/tvGrade" |
63 | tools:text="七年级-上学期" | 63 | tools:text="七年级-上学期" |
64 | android:textSize="10sp" | 64 | android:textSize="10sp" |
65 | android:textColor="#666" | 65 | android:textColor="#666" |
66 | android:layout_width="wrap_content" | 66 | android:layout_width="wrap_content" |
67 | android:layout_height="wrap_content" /> | 67 | android:layout_height="wrap_content" /> |
68 | <Space style="@style/empty_space"/> | 68 | <Space style="@style/empty_space"/> |
69 | <androidx.appcompat.widget.AppCompatTextView | 69 | <androidx.appcompat.widget.AppCompatTextView |
70 | android:id="@+id/btnDelete" | ||
70 | android:text="删除" | 71 | android:text="删除" |
71 | android:textSize="10sp" | 72 | android:textSize="10sp" |
72 | android:textColor="#666" | 73 | android:textColor="#666" |
73 | android:gravity="center_vertical" | 74 | android:gravity="center_vertical" |
74 | android:drawableStart="@drawable/svg_delete" | 75 | android:drawableStart="@drawable/svg_delete" |
75 | android:drawableTint="#C5C5C5" | 76 | android:drawableTint="#C5C5C5" |
76 | android:drawablePadding="2dp" | 77 | android:drawablePadding="2dp" |
77 | android:layout_width="wrap_content" | 78 | android:layout_width="wrap_content" |
78 | android:layout_height="wrap_content"/> | 79 | android:layout_height="wrap_content"/> |
79 | <View | 80 | <View |
80 | android:background="#F5F5F5" | 81 | android:background="#F5F5F5" |
81 | android:layout_marginHorizontal="15dp" | 82 | android:layout_marginHorizontal="15dp" |
82 | android:layout_width="1dp" | 83 | android:layout_width="1dp" |
83 | android:layout_height="10dp"/> | 84 | android:layout_height="10dp"/> |
84 | <androidx.appcompat.widget.AppCompatTextView | 85 | <androidx.appcompat.widget.AppCompatTextView |
86 | android:id="@+id/btnDetail" | ||
85 | android:text="详情" | 87 | android:text="详情" |
86 | android:textSize="10sp" | 88 | android:textSize="10sp" |
87 | android:textColor="#666" | 89 | android:textColor="#666" |
88 | android:gravity="center_vertical" | 90 | android:gravity="center_vertical" |
89 | android:drawableStart="@drawable/svg_go_detail" | 91 | android:drawableStart="@drawable/svg_go_detail" |
90 | android:drawablePadding="5dp" | 92 | android:drawablePadding="5dp" |
91 | android:layout_width="wrap_content" | 93 | android:layout_width="wrap_content" |
92 | android:layout_height="wrap_content"/> | 94 | android:layout_height="wrap_content"/> |
93 | </LinearLayout> | 95 | </LinearLayout> |
94 | </LinearLayout> | 96 | </LinearLayout> |
95 | </LinearLayout> | 97 | </LinearLayout> |
96 | <TextView | 98 | <TextView |
97 | android:id="@+id/tvFlag" | 99 | android:id="@+id/tvFlag" |
98 | android:text="已反馈" | 100 | android:text="已反馈" |
99 | android:textSize="9sp" | 101 | android:textSize="9sp" |
100 | android:textColor="@color/white" | 102 | android:textColor="@color/white" |
101 | android:background="@drawable/bg_homework_feedback_flag" | 103 | android:background="@drawable/bg_homework_feedback_flag" |
102 | android:layout_gravity="end" | 104 | android:layout_gravity="end" |
103 | android:paddingHorizontal="7dp" | 105 | android:paddingHorizontal="7dp" |
104 | android:paddingVertical="2dp" | 106 | android:paddingVertical="2dp" |
105 | android:layout_width="wrap_content" | 107 | android:layout_width="wrap_content" |
106 | android:layout_height="wrap_content" /> | 108 | android:layout_height="wrap_content" /> |
107 | </FrameLayout> | 109 | </FrameLayout> |
108 | 110 | ||
109 | </LinearLayout> | 111 | </LinearLayout> |