Commit 82701f774db7af8265cce9b47d2789a886d56041

Authored by shixianjie
1 parent 7a017e7a6e
Exists in master

筛选功能优化

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.content.Intent; 4 import android.content.Intent;
5 import android.os.Bundle; 5 import android.os.Bundle;
6 import android.view.Gravity; 6 import android.view.Gravity;
7 import android.view.View; 7 import android.view.View;
8 import android.widget.ImageView; 8 import android.widget.ImageView;
9 import android.widget.LinearLayout; 9 import android.widget.LinearLayout;
10 import android.widget.PopupMenu; 10 import android.widget.PopupMenu;
11 import android.widget.PopupWindow; 11 import android.widget.PopupWindow;
12 import android.widget.TextView; 12 import android.widget.TextView;
13 13
14 import androidx.annotation.NonNull; 14 import androidx.annotation.NonNull;
15 import androidx.annotation.Nullable; 15 import androidx.annotation.Nullable;
16 import androidx.lifecycle.MutableLiveData; 16 import androidx.lifecycle.MutableLiveData;
17 17
18 import com.chad.library.adapter.base.BaseQuickAdapter; 18 import com.chad.library.adapter.base.BaseQuickAdapter;
19 import com.chad.library.adapter.base.BaseViewHolder; 19 import com.chad.library.adapter.base.BaseViewHolder;
20 import com.google.android.material.tabs.TabLayout; 20 import com.google.android.material.tabs.TabLayout;
21 import com.google.gson.Gson; 21 import com.google.gson.Gson;
22 import com.hjx.parent.adapter.HomeworkListAdapter; 22 import com.hjx.parent.adapter.HomeworkListAdapter;
23 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; 23 import com.hjx.parent.databinding.ActivityStudentHomeworkBinding;
24 import com.hjx.parent.databinding.PopupFilterFeedbackBinding; 24 import com.hjx.parent.databinding.PopupFilterFeedbackBinding;
25 import com.hjx.parent.databinding.PopupFilterGradeBinding; 25 import com.hjx.parent.databinding.PopupFilterGradeBinding;
26 import com.hjx.parent.databinding.PopupFilterSubjectBinding; 26 import com.hjx.parent.databinding.PopupFilterSubjectBinding;
27 import com.hjx.parent.databinding.PopupFilterTermBinding; 27 import com.hjx.parent.databinding.PopupFilterTermBinding;
28 import com.hjx.parent.dialog.MsgConfirmDialog; 28 import com.hjx.parent.dialog.MsgConfirmDialog;
29 import com.hjx.parent.dialog.StageHuyouDialog; 29 import com.hjx.parent.dialog.StageHuyouDialog;
30 import com.hjx.parent.function.Function1; 30 import com.hjx.parent.function.Function1;
31 import com.hjx.parent.rx.BaseRxActivity; 31 import com.hjx.parent.rx.BaseRxActivity;
32 import com.prws.common.bean.ResponseResult; 32 import com.prws.common.bean.ResponseResult;
33 import com.prws.common.bean.Student; 33 import com.prws.common.bean.Student;
34 import com.prws.common.bean.homework.HomeworkList; 34 import com.prws.common.bean.homework.HomeworkList;
35 import com.prws.common.bean.homework.StDetail; 35 import com.prws.common.bean.homework.StDetail;
36 import com.prws.common.net.NetWorks; 36 import com.prws.common.net.NetWorks;
37 import com.prws.common.utils.SharedPreferencesUtil; 37 import com.prws.common.utils.SharedPreferencesUtil;
38 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 38 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
39 39
40 import java.text.DecimalFormat; 40 import java.text.DecimalFormat;
41 import java.text.SimpleDateFormat; 41 import java.text.SimpleDateFormat;
42 import java.util.ArrayList; 42 import java.util.ArrayList;
43 import java.util.Calendar; 43 import java.util.Calendar;
44 import java.util.Collections; 44 import java.util.Collections;
45 import java.util.Date; 45 import java.util.Date;
46 import java.util.HashMap; 46 import java.util.HashMap;
47 import java.util.List; 47 import java.util.List;
48 import java.util.Locale; 48 import java.util.Locale;
49 import java.util.Map; 49 import java.util.Map;
50 50
51 import io.reactivex.Observable; 51 import io.reactivex.Observable;
52 import io.reactivex.android.schedulers.AndroidSchedulers; 52 import io.reactivex.android.schedulers.AndroidSchedulers;
53 import io.reactivex.schedulers.Schedulers; 53 import io.reactivex.schedulers.Schedulers;
54 54
55 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { 55 public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> {
56 56
57 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); 57 private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter();
58 58
59 private final List<StDetail> mWeekList = new ArrayList<>(); 59 private final List<StDetail> mWeekList = new ArrayList<>();
60 private final List<StDetail> mStageList = new ArrayList<>(); 60 private final List<StDetail> mStageList = new ArrayList<>();
61 private final HuyouAdapter weekAdapter = new HuyouAdapter(mWeekList); 61 private final HuyouAdapter weekAdapter = new HuyouAdapter(mWeekList);
62 private final HuyouAdapter stageAdapter = new HuyouAdapter(mStageList); 62 private final HuyouAdapter stageAdapter = new HuyouAdapter(mStageList);
63 63
64 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; 64 PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter;
65 MsgConfirmDialog deleteDialog; 65 MsgConfirmDialog deleteDialog;
66 StageHuyouDialog stageHuyouDialog; 66 StageHuyouDialog stageHuyouDialog;
67 State state = new State(); 67 State state = new State();
68 68
69 private void handlerIntent() { 69 private void handlerIntent() {
70 String json = getIntent().getStringExtra("studentJson"); 70 String json = getIntent().getStringExtra("studentJson");
71 if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); 71 if (json == null) json = (String) SharedPreferencesUtil.getData("student", "");
72 try { state.student = new Gson().fromJson(json, Student.class); } 72 try { state.student = new Gson().fromJson(json, Student.class); }
73 catch (Throwable t) { t.printStackTrace(); } 73 catch (Throwable t) { t.printStackTrace(); }
74 } 74 }
75 75
76 @SuppressLint("SetTextI18n") 76 @SuppressLint("SetTextI18n")
77 @Override 77 @Override
78 public void initView(Bundle savedInstanceState) { 78 public void initView(Bundle savedInstanceState) {
79 handlerIntent(); 79 handlerIntent();
80 if (state.student == null) { 80 if (state.student == null) {
81 finish(); 81 finish();
82 return; 82 return;
83 } 83 }
84 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); 84 binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
85 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 85 binding.tvTitle.setText(state.student.stuName + "的全部作业");
86 setupTab(); 86 setupTab();
87 binding.recyclerView.setAdapter(homeworkAdapter); 87 binding.recyclerView.setAdapter(homeworkAdapter);
88 88
89 deleteDialog = new MsgConfirmDialog.Builder(this) 89 deleteDialog = new MsgConfirmDialog.Builder(this)
90 .setMessage("确认要删除吗?一旦删除不可恢复") 90 .setMessage("确认要删除吗?一旦删除不可恢复")
91 .setPositive("暂不删除") 91 .setPositive("暂不删除")
92 .setNegative("确定删除") 92 .setNegative("确定删除")
93 .build(); 93 .build();
94 94
95 binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); 95 binding.ftSubject.setOnClickListener(v -> showSubjectFilter());
96 binding.ftGrade.setOnClickListener(v -> showGradeFilter()); 96 binding.ftGrade.setOnClickListener(v -> showGradeFilter());
97 binding.ftTerm.setOnClickListener(v -> showTermFilter()); 97 binding.ftTerm.setOnClickListener(v -> showTermFilter());
98 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); 98 binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter());
99 homeworkAdapter.deleteCall = data -> { 99 homeworkAdapter.deleteCall = data -> {
100 deleteDialog.show(null, () -> { 100 deleteDialog.show(null, () -> {
101 deleteHomework(data); 101 deleteHomework(data);
102 return true; 102 return true;
103 }); 103 });
104 }; 104 };
105 homeworkAdapter.detailCall = data -> { 105 homeworkAdapter.detailCall = data -> {
106 if (data.getRight() == null) { 106 if (data.getRight() == null) {
107 Intent intent = new Intent(this, HomeworkDetailActivity.class); 107 Intent intent = new Intent(this, HomeworkDetailActivity.class);
108 intent.putExtra("data", data); 108 intent.putExtra("data", data);
109 intent.putExtra("student", state.student); 109 intent.putExtra("student", state.student);
110 startActivity(intent); 110 startActivity(intent);
111 } else { 111 } else {
112 Intent intent = new Intent(this, HomeworkShareActivity.class); 112 Intent intent = new Intent(this, HomeworkShareActivity.class);
113 intent.putExtra("student", state.student); 113 intent.putExtra("student", state.student);
114 intent.putExtra("id", data.getId()); 114 intent.putExtra("id", data.getId());
115 intent.putExtra("grade", data.getGrade()); 115 intent.putExtra("grade", data.getGrade());
116 intent.putExtra("subject", data.getSubject()); 116 intent.putExtra("subject", data.getSubject());
117 startActivity(intent); 117 startActivity(intent);
118 } 118 }
119 }; 119 };
120 120
121 binding.btnChangeStudent.setOnClickListener(v -> { 121 binding.btnChangeStudent.setOnClickListener(v -> {
122 Intent intent = new Intent(this, TeacherChooseActivity.class); 122 Intent intent = new Intent(this, TeacherChooseActivity.class);
123 intent.putExtra("needBack", true); 123 intent.putExtra("needBack", true);
124 startActivityForResult(intent, 0xA01); 124 startActivityForResult(intent, 0xA01);
125 }); 125 });
126 126
127 binding.btnGeneralHuyou.setOnClickListener(v -> generalWeek()); 127 binding.btnGeneralHuyou.setOnClickListener(v -> generalWeek());
128 binding.btnStageHuyou.setOnClickListener(v -> { 128 binding.btnStageHuyou.setOnClickListener(v -> {
129 if (stageHuyouDialog == null) stageHuyouDialog = new StageHuyouDialog(this); 129 if (stageHuyouDialog == null) stageHuyouDialog = new StageHuyouDialog(this);
130 stageHuyouDialog.show(this::generalStage); 130 stageHuyouDialog.show(this::generalStage);
131 }); 131 });
132 132
133 weekAdapter.detailCall = data -> goHuyou(data, 0); 133 weekAdapter.detailCall = data -> goHuyou(data, 0);
134 stageAdapter.detailCall = data -> goHuyou(data, 1); 134 stageAdapter.detailCall = data -> goHuyou(data, 1);
135 weekAdapter.deleteCall = data -> { 135 weekAdapter.deleteCall = data -> {
136 deleteDialog.show(null, () -> { 136 deleteDialog.show(null, () -> {
137 deleteHuyou(data); 137 deleteHuyou(data);
138 return true; 138 return true;
139 }); 139 });
140 }; 140 };
141 stageAdapter.deleteCall = weekAdapter.deleteCall; 141 stageAdapter.deleteCall = weekAdapter.deleteCall;
142 142
143 getWeekHuyou(); 143 getWeekHuyou();
144 getStageHuyou(); 144 getStageHuyou();
145 } 145 }
146 146
147 private void goHuyou(StDetail data, int type) { 147 private void goHuyou(StDetail data, int type) {
148 Intent intent = new Intent(this, HuyouDetailActivity.class); 148 Intent intent = new Intent(this, HuyouDetailActivity.class);
149 intent.putExtra("id", data.id); 149 intent.putExtra("id", data.id);
150 intent.putExtra("type", type); 150 intent.putExtra("type", type);
151 intent.putExtra("student", state.student); 151 intent.putExtra("student", state.student);
152 startActivity(intent); 152 startActivity(intent);
153 } 153 }
154 154
155 @Override 155 @Override
156 protected void onStart() { 156 protected void onStart() {
157 super.onStart(); 157 super.onStart();
158 getHomework(); 158 getHomework();
159 } 159 }
160 160
161 @SuppressLint("SetTextI18n") 161 @SuppressLint("SetTextI18n")
162 @Override 162 @Override
163 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 163 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
164 super.onActivityResult(requestCode, resultCode, data); 164 super.onActivityResult(requestCode, resultCode, data);
165 if (requestCode == 0xA01 && resultCode == RESULT_OK) { 165 if (requestCode == 0xA01 && resultCode == RESULT_OK) {
166 String json = (String) SharedPreferencesUtil.getData("student", ""); 166 String json = (String) SharedPreferencesUtil.getData("student", "");
167 try { 167 try {
168 state.student = new Gson().fromJson(json, Student.class); 168 state.student = new Gson().fromJson(json, Student.class);
169 binding.tvTitle.setText(state.student.stuName + "的全部作业"); 169 binding.tvTitle.setText(state.student.stuName + "的全部作业");
170 getHomework(); 170 getHomework();
171 getWeekHuyou(); 171 getWeekHuyou();
172 getStageHuyou(); 172 getStageHuyou();
173 } 173 }
174 catch (Throwable t) { t.printStackTrace(); } 174 catch (Throwable t) { t.printStackTrace(); }
175 } 175 }
176 } 176 }
177 177
178 private void setupTab() { 178 private void setupTab() {
179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每日作业")); 179 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每日作业"));
180 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每周总结")); 180 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("每周总结"));
181 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("阶段性总结")); 181 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("阶段性总结"));
182 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 182 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
183 @Override 183 @Override
184 public void onTabSelected(TabLayout.Tab tab) { 184 public void onTabSelected(TabLayout.Tab tab) {
185 binding.filterBar.setVisibility(View.GONE); 185 binding.filterBar.setVisibility(View.GONE);
186 binding.weekBar.setVisibility(View.GONE); 186 binding.weekBar.setVisibility(View.GONE);
187 binding.stageBar.setVisibility(View.GONE); 187 binding.stageBar.setVisibility(View.GONE);
188 if (tab.getPosition() == 0) { //每日 188 if (tab.getPosition() == 0) { //每日
189 binding.filterBar.setVisibility(View.VISIBLE); 189 binding.filterBar.setVisibility(View.VISIBLE);
190 binding.recyclerView.setAdapter(homeworkAdapter); 190 binding.recyclerView.setAdapter(homeworkAdapter);
191 } else if (tab.getPosition() == 1) { //每周 191 } else if (tab.getPosition() == 1) { //每周
192 binding.weekBar.setVisibility(View.VISIBLE); 192 binding.weekBar.setVisibility(View.VISIBLE);
193 binding.recyclerView.setAdapter(weekAdapter); 193 binding.recyclerView.setAdapter(weekAdapter);
194 } else if (tab.getPosition() == 2) { //阶段 194 } else if (tab.getPosition() == 2) { //阶段
195 binding.stageBar.setVisibility(View.VISIBLE); 195 binding.stageBar.setVisibility(View.VISIBLE);
196 binding.recyclerView.setAdapter(stageAdapter); 196 binding.recyclerView.setAdapter(stageAdapter);
197 } 197 }
198 } 198 }
199 @Override 199 @Override
200 public void onTabUnselected(TabLayout.Tab tab) { 200 public void onTabUnselected(TabLayout.Tab tab) {
201 } 201 }
202 @Override 202 @Override
203 public void onTabReselected(TabLayout.Tab tab) { 203 public void onTabReselected(TabLayout.Tab tab) {
204 } 204 }
205 }); 205 });
206 } 206 }
207 207
208 @SuppressLint("CheckResult") 208 @SuppressLint("CheckResult")
209 protected void deleteHomework(HomeworkList data) { 209 protected void deleteHomework(HomeworkList data) {
210 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId()) 210 NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId())
211 .subscribeOn(Schedulers.io()) 211 .subscribeOn(Schedulers.io())
212 .observeOn(AndroidSchedulers.mainThread()) 212 .observeOn(AndroidSchedulers.mainThread())
213 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 213 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
214 .subscribe((response, th) -> { 214 .subscribe((response, th) -> {
215 if (th != null) th.printStackTrace(); 215 if (th != null) th.printStackTrace();
216 if (response != null && response.getSuccess()) { 216 if (response != null && response.getSuccess()) {
217 getHomework(); 217 getHomework();
218 } 218 }
219 }); 219 });
220 220
221 } 221 }
222 222
223 @SuppressLint("CheckResult") 223 @SuppressLint("CheckResult")
224 protected void getHomework() { 224 protected void getHomework() {
225 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) 225 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId)
226 .subscribeOn(Schedulers.io()) 226 .subscribeOn(Schedulers.io())
227 .observeOn(AndroidSchedulers.mainThread()) 227 .observeOn(AndroidSchedulers.mainThread())
228 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 228 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
229 .toObservable() 229 .toObservable()
230 .concatMap(response -> Observable.fromIterable(response.getData())) 230 .concatMap(response -> Observable.fromIterable(response.getData()))
231 // 过滤 231 // 过滤
232 .filter(data -> { // 学科 232 .filter(data -> { // 学科
233 String subject = state.subject.getValue(); 233 String subject = state.subject.getValue();
234 if (subject == null || subject.isEmpty()) return true; 234 if (subject == null || subject.isEmpty()) return true;
235 else return subject.equals(data.getSubject()); 235 else return subject.equals(data.getSubject());
236 }) 236 })
237 .filter(data -> { // 年级 237 .filter(data -> { // 年级
238 String grade = state.grade.getValue(); 238 String grade = state.grade.getValue();
239 if (grade == null || grade.isEmpty()) return true; 239 if (grade == null || grade.isEmpty()) return true;
240 else return grade.equals(data.getGrade()); 240 else return grade.equals(data.getGrade());
241 }) 241 })
242 .filter(data -> { // 学期 242 .filter(data -> { // 学期
243 String term = state.term.getValue(); 243 String term = state.term.getValue();
244 if (term == null || term.isEmpty()) return true; 244 if (term == null || term.isEmpty()) return true;
245 else return term.equals(data.getTerm()); 245 else return term.equals(data.getTerm());
246 }) 246 })
247 .filter(data -> { // 反馈 247 .filter(data -> { // 反馈
248 Integer feedback = state.feedback.getValue(); 248 Integer feedback = state.feedback.getValue();
249 if (feedback == null || feedback == 0) return true; 249 if (feedback == null || feedback == 0) return true;
250 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); 250 else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null);
251 }) 251 })
252 // 过滤完成, 收集 252 // 过滤完成, 收集
253 .toList() 253 .toList()
254 .subscribe((data, th) -> { 254 .subscribe((data, th) -> {
255 if (th != null) th.printStackTrace(); 255 if (th != null) th.printStackTrace();
256 if (data != null) { 256 if (data != null) {
257 Collections.sort(data); 257 Collections.sort(data);
258 } 258 }
259 homeworkAdapter.setNewData(data); 259 homeworkAdapter.setNewData(data);
260 }); 260 });
261 } 261 }
262 262
263 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 263 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
264 private void getWeekHuyou() { 264 private void getWeekHuyou() {
265 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0) 265 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 0)
266 .compose(transformSingle()) 266 .compose(transformSingle())
267 .map(ResponseResult::getData) 267 .map(ResponseResult::getData)
268 .subscribe((list, throwable) -> { 268 .subscribe((list, throwable) -> {
269 if (throwable != null) { 269 if (throwable != null) {
270 throwable.printStackTrace(); 270 throwable.printStackTrace();
271 return; 271 return;
272 } 272 }
273 if (list != null) { 273 if (list != null) {
274 mWeekList.clear(); 274 mWeekList.clear();
275 mWeekList.addAll(list); 275 mWeekList.addAll(list);
276 weekAdapter.notifyDataSetChanged(); 276 weekAdapter.notifyDataSetChanged();
277 277
278 boolean exist = false; 278 boolean exist = false;
279 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR); 279 int thisWeek = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
280 for (StDetail bean: mWeekList) { 280 for (StDetail bean: mWeekList) {
281 Calendar other = Calendar.getInstance(); 281 Calendar other = Calendar.getInstance();
282 other.setTime(bean.endTime); 282 other.setTime(bean.endTime);
283 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) { 283 if (other.get(Calendar.WEEK_OF_YEAR) == thisWeek) {
284 exist = true; 284 exist = true;
285 break; 285 break;
286 } 286 }
287 } 287 }
288 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE); 288 binding.btnGeneralHuyou.setVisibility(exist ? View.GONE : View.VISIBLE);
289 } 289 }
290 }); 290 });
291 } 291 }
292 292
293 @SuppressLint({"CheckResult", "NotifyDataSetChanged"}) 293 @SuppressLint({"CheckResult", "NotifyDataSetChanged"})
294 private void getStageHuyou() { 294 private void getStageHuyou() {
295 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1) 295 NetWorks.service_url.getHuyouList(NetWorks.getHeader(), state.student.stuId, 1)
296 .compose(transformSingle()) 296 .compose(transformSingle())
297 .map(ResponseResult::getData) 297 .map(ResponseResult::getData)
298 .subscribe((list, throwable) -> { 298 .subscribe((list, throwable) -> {
299 if (throwable != null) { 299 if (throwable != null) {
300 throwable.printStackTrace(); 300 throwable.printStackTrace();
301 return; 301 return;
302 } 302 }
303 if (list != null) { 303 if (list != null) {
304 mStageList.clear(); 304 mStageList.clear();
305 mStageList.addAll(list); 305 mStageList.addAll(list);
306 stageAdapter.notifyDataSetChanged(); 306 stageAdapter.notifyDataSetChanged();
307 } 307 }
308 }); 308 });
309 } 309 }
310 310
311 @SuppressLint("CheckResult") 311 @SuppressLint("CheckResult")
312 private void generalWeek() { 312 private void generalWeek() {
313 showLoadingDialog("稍等..."); 313 showLoadingDialog("稍等...");
314 NetWorks.service_url.generalHuyou() 314 NetWorks.service_url.generalHuyou()
315 .compose(transformSingle()) 315 .compose(transformSingle())
316 .subscribe((response, throwable) -> { 316 .subscribe((response, throwable) -> {
317 cancelLoadingDialog(); 317 cancelLoadingDialog();
318 if (throwable != null) { 318 if (throwable != null) {
319 loadFail("失败"); 319 loadFail("失败");
320 throwable.printStackTrace(); 320 throwable.printStackTrace();
321 return; 321 return;
322 } 322 }
323 if (response != null && response.getSuccess()) { 323 if (response != null && response.getSuccess()) {
324 binding.btnGeneralHuyou.setVisibility(View.GONE); 324 binding.btnGeneralHuyou.setVisibility(View.GONE);
325 getWeekHuyou(); 325 getWeekHuyou();
326 } 326 }
327 }); 327 });
328 } 328 }
329 329
330 @SuppressLint("CheckResult") 330 @SuppressLint("CheckResult")
331 private void generalStage(Date startDate, Date endDate, String subject) { 331 private void generalStage(Date startDate, Date endDate, String subject) {
332 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA); 332 SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss", Locale.CHINA);
333 Map<String, Object> body = new HashMap<>(); 333 Map<String, Object> body = new HashMap<>();
334 body.put("stuId", state.student.stuId); 334 body.put("stuId", state.student.stuId);
335 body.put("startTime", format.format(startDate)); 335 body.put("startTime", format.format(startDate));
336 body.put("endTime", format.format(endDate)); 336 body.put("endTime", format.format(endDate));
337 body.put("subject", subject); 337 body.put("subject", subject);
338 showLoadingDialog("稍等..."); 338 showLoadingDialog("稍等...");
339 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body) 339 NetWorks.service_url.generalStageHuyou(NetWorks.getHeader(), body)
340 .subscribeOn(Schedulers.io()) 340 .subscribeOn(Schedulers.io())
341 .observeOn(AndroidSchedulers.mainThread()) 341 .observeOn(AndroidSchedulers.mainThread())
342 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 342 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
343 .subscribe((response, throwable) -> { 343 .subscribe((response, throwable) -> {
344 if (throwable != null) { 344 if (throwable != null) {
345 loadFail("失败"); 345 loadFail("失败");
346 throwable.printStackTrace(); 346 throwable.printStackTrace();
347 return; 347 return;
348 } 348 }
349 if (response.getSuccess()) { 349 if (response.getSuccess()) {
350 getStageHuyou(); 350 getStageHuyou();
351 cancelLoadingDialog(); 351 cancelLoadingDialog();
352 } else { 352 } else {
353 loadFail(response.getMsg()); 353 loadFail(response.getMsg());
354 } 354 }
355 }); 355 });
356 } 356 }
357 357
358 @SuppressLint("CheckResult") 358 @SuppressLint("CheckResult")
359 private void deleteHuyou(StDetail detail) { 359 private void deleteHuyou(StDetail detail) {
360 showLoadingDialog("稍等..."); 360 showLoadingDialog("稍等...");
361 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id) 361 NetWorks.service_url.deleteHuyou(NetWorks.getHeader(), detail.id)
362 .subscribeOn(Schedulers.io()) 362 .subscribeOn(Schedulers.io())
363 .observeOn(AndroidSchedulers.mainThread()) 363 .observeOn(AndroidSchedulers.mainThread())
364 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) 364 .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
365 .subscribe((response, throwable) -> { 365 .subscribe((response, throwable) -> {
366 cancelLoadingDialog(); 366 cancelLoadingDialog();
367 if (throwable != null) { 367 if (throwable != null) {
368 loadFail("失败"); 368 loadFail("失败");
369 throwable.printStackTrace(); 369 throwable.printStackTrace();
370 return; 370 return;
371 } 371 }
372 if (detail.type == 0) { 372 if (detail.type == 0) {
373 getWeekHuyou(); 373 getWeekHuyou();
374 } else { 374 } else {
375 getStageHuyou(); 375 getStageHuyou();
376 } 376 }
377 }); 377 });
378 } 378 }
379 379
380 private void showSubjectFilter() { 380 private void showSubjectFilter() {
381 if (subjectFilter == null) { 381 if (subjectFilter == null) {
382 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); 382 PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater());
383 db.setLifecycleOwner(this); 383 db.setLifecycleOwner(this);
384 db.setState(state); 384 db.setState(state);
385 db.bg.setOnClickListener(v -> subjectFilter.dismiss()); 385 db.bg.setOnClickListener(v -> subjectFilter.dismiss());
386 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 386 subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
387 subjectFilter.setOutsideTouchable(true); 387 subjectFilter.setOutsideTouchable(true);
388 subjectFilter.setOnDismissListener(this::getHomework);
389 } 388 }
390 subjectFilter.showAsDropDown(binding.anchorView); 389 subjectFilter.showAsDropDown(binding.anchorView);
390 state.onFilter = i -> {
391 subjectFilter.dismiss();
392 String subject = state.subject.getValue();
393 binding.ftSubject.setActivated(subject != null && !subject.isEmpty());
394 binding.ftSubject.setText(subject == null || subject.isEmpty() ? "学科" : subject);
395 getHomework();
396 };
391 } 397 }
392 398
393 private void showGradeFilter() { 399 private void showGradeFilter() {
394 if (gradeFilter == null) { 400 if (gradeFilter == null) {
395 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); 401 PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater());
396 db.setLifecycleOwner(this); 402 db.setLifecycleOwner(this);
397 db.setState(state); 403 db.setState(state);
398 db.bg.setOnClickListener(v -> gradeFilter.dismiss()); 404 db.bg.setOnClickListener(v -> gradeFilter.dismiss());
399 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 405 gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
400 gradeFilter.setOutsideTouchable(true); 406 gradeFilter.setOutsideTouchable(true);
401 gradeFilter.setOnDismissListener(this::getHomework);
402 } 407 }
403 gradeFilter.showAsDropDown(binding.anchorView); 408 gradeFilter.showAsDropDown(binding.anchorView);
409 state.onFilter = i -> {
410 gradeFilter.dismiss();
411 String grade = state.grade.getValue();
412 binding.ftGrade.setActivated(grade != null && !grade.isEmpty());
413 binding.ftGrade.setText(grade == null || grade.isEmpty() ? "年级" : grade);
414
415 getHomework();
416 };
404 } 417 }
405 418
406 private void showTermFilter() { 419 private void showTermFilter() {
407 if (termFilter == null) { 420 if (termFilter == null) {
408 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); 421 PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater());
409 db.setLifecycleOwner(this); 422 db.setLifecycleOwner(this);
410 db.setState(state); 423 db.setState(state);
411 db.bg.setOnClickListener(v -> termFilter.dismiss()); 424 db.bg.setOnClickListener(v -> termFilter.dismiss());
412 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 425 termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
413 termFilter.setOutsideTouchable(true); 426 termFilter.setOutsideTouchable(true);
414 termFilter.setOnDismissListener(this::getHomework);
415 } 427 }
416 termFilter.showAsDropDown(binding.anchorView); 428 termFilter.showAsDropDown(binding.anchorView);
429 state.onFilter = i -> {
430 termFilter.dismiss();
431 String term = state.term.getValue();
432 binding.ftTerm.setActivated(term != null && !term.isEmpty());
433 binding.ftTerm.setText(term == null || term.isEmpty() ? "学期" : term);
434
435 getHomework();
436 };
417 } 437 }
418 438
419 private void showFeedbackFilter() { 439 private void showFeedbackFilter() {
420 if (feedbackFilter == null) { 440 if (feedbackFilter == null) {
421 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); 441 PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater());
422 db.setLifecycleOwner(this); 442 db.setLifecycleOwner(this);
423 db.setState(state); 443 db.setState(state);
424 db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); 444 db.bg.setOnClickListener(v -> feedbackFilter.dismiss());
425 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 445 feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
426 feedbackFilter.setOutsideTouchable(true); 446 feedbackFilter.setOutsideTouchable(true);
427 feedbackFilter.setOnDismissListener(this::getHomework);
428 } 447 }
429 feedbackFilter.showAsDropDown(binding.anchorView); 448 feedbackFilter.showAsDropDown(binding.anchorView);
449 state.onFilter = i -> {
450 feedbackFilter.dismiss();
451 int feedback = state.feedback.getValue().intValue();
452 binding.ftFeedback.setActivated(feedback != 0);
453 binding.ftFeedback.setText(feedback == 0 ? "反馈状态" : feedback == 1 ? "已反馈" : "未反馈");
454
455 getHomework();
456 };
430 } 457 }
431 458
432 @Override 459 @Override
433 protected ActivityStudentHomeworkBinding getViewBinding() { 460 protected ActivityStudentHomeworkBinding getViewBinding() {
434 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); 461 return ActivityStudentHomeworkBinding.inflate(getLayoutInflater());
435 } 462 }
436 463
437 public static class State { 464 public static class State {
438 public Student student; 465 public Student student;
439 466
467 public Function1<Integer> onFilter = i -> { };
468
440 public MutableLiveData<String> subject = new MutableLiveData<>(""); 469 public MutableLiveData<String> subject = new MutableLiveData<>("");
441 public void setSubject(String value) { 470 public void setSubject(String value) {
442 subject.setValue(value); 471 subject.setValue(value);
472 onFilter.invoke(1);
443 } 473 }
444 474
445 public MutableLiveData<String> grade = new MutableLiveData<>(""); 475 public MutableLiveData<String> grade = new MutableLiveData<>("");
446 public void setGrade(String value) { 476 public void setGrade(String value) {
447 grade.setValue(value); 477 grade.setValue(value);
478 onFilter.invoke(2);
448 } 479 }
449 480
450 public MutableLiveData<String> term = new MutableLiveData<>(""); 481 public MutableLiveData<String> term = new MutableLiveData<>("");
451 public void setTerm(String value) { 482 public void setTerm(String value) {
452 term.setValue(value); 483 term.setValue(value);
484 onFilter.invoke(3);
453 } 485 }
454 486
455 //0:全部, 1: 已反馈, 2:未反馈 487 //0:全部, 1: 已反馈, 2:未反馈
456 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); 488 public MutableLiveData<Integer> feedback = new MutableLiveData<>(0);
457 public void setFeedback(int value) { 489 public void setFeedback(int value) {
458 feedback.setValue(value); 490 feedback.setValue(value);
491 onFilter.invoke(4);
459 } 492 }
460 } 493 }
461 494
462 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> { 495 static class HuyouAdapter extends BaseQuickAdapter<StDetail, BaseViewHolder> {
463 public Function1<StDetail> deleteCall; 496 public Function1<StDetail> deleteCall;
464 public Function1<StDetail> detailCall; 497 public Function1<StDetail> detailCall;
465 public Student student; 498 public Student student;
466 499
467 public HuyouAdapter(@Nullable List<StDetail> data) { 500 public HuyouAdapter(@Nullable List<StDetail> data) {
468 super(R.layout.item_homework_list, data); 501 super(R.layout.item_homework_list, data);
469 } 502 }
470 503
471 @SuppressLint("SetTextI18n,SimpleDateFormat") 504 @SuppressLint("SetTextI18n,SimpleDateFormat")
472 @Override 505 @Override
473 protected void convert(@NonNull BaseViewHolder holder, StDetail data) { 506 protected void convert(@NonNull BaseViewHolder holder, StDetail data) {
474 holder.setGone(R.id.tvFlag, false); 507 holder.setGone(R.id.tvFlag, false);
475 int subjectImg; 508 int subjectImg;
476 switch (data.homeworkSubject) { 509 switch (data.homeworkSubject) {
477 case "语文": 510 case "语文":
478 subjectImg = R.drawable.ic_chinese; 511 subjectImg = R.drawable.ic_chinese;
479 break; 512 break;
480 case "英语": 513 case "英语":
481 subjectImg = R.drawable.ic_english; 514 subjectImg = R.drawable.ic_english;
482 break; 515 break;
483 case "物理": 516 case "物理":
484 subjectImg = R.drawable.ic_physics; 517 subjectImg = R.drawable.ic_physics;
485 break; 518 break;
486 case "化学": 519 case "化学":
487 subjectImg = R.drawable.ic_chemistry; 520 subjectImg = R.drawable.ic_chemistry;
488 break; 521 break;
489 case "数学": 522 case "数学":
490 default: 523 default:
491 subjectImg = R.drawable.ic_math; 524 subjectImg = R.drawable.ic_math;
492 } 525 }
493 holder.setImageResource(R.id.ivSubject, subjectImg); 526 holder.setImageResource(R.id.ivSubject, subjectImg);
494 Date endDate = new Date(data.endTime.getTime() - 1000); 527 Date endDate = new Date(data.endTime.getTime() - 1000);
495 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime); 528 String startStr = new SimpleDateFormat("yyyy.M.d").format(data.startTime);
496 String endStr = new SimpleDateFormat("-M.d").format(endDate); 529 String endStr = new SimpleDateFormat("-M.d").format(endDate);
497 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结"; 530 String typeStr = data.type == 0 ? "作业周总结" : "作业阶段性总结";
498 String title = startStr + endStr + data.homeworkSubject + typeStr; 531 String title = startStr + endStr + data.homeworkSubject + typeStr;
499 holder.setText(R.id.tvName, title); 532 holder.setText(R.id.tvName, title);
500 holder.setText(R.id.tvGrade, data.grade); 533 holder.setText(R.id.tvGrade, data.grade);
501 View btnDelete = holder.getView(R.id.btnDelete); 534 View btnDelete = holder.getView(R.id.btnDelete);
502 View btnDetail = holder.getView(R.id.btnDetail); 535 View btnDetail = holder.getView(R.id.btnDetail);
503 btnDelete.setOnClickListener(v -> { 536 btnDelete.setOnClickListener(v -> {
504 if (deleteCall != null) deleteCall.invoke(data); 537 if (deleteCall != null) deleteCall.invoke(data);
505 }); 538 });
506 btnDetail.setOnClickListener(v -> { 539 btnDetail.setOnClickListener(v -> {
507 if (detailCall != null) detailCall.invoke(data); 540 if (detailCall != null) detailCall.invoke(data);
508 }); 541 });
509 } 542 }
510 543
511 private SimpleDateFormat getFormatWithGmt8(String pattern) { 544 private SimpleDateFormat getFormatWithGmt8(String pattern) {
512 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA); 545 SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA);
513 //format.setTimeZone(TimeZone.getTimeZone("GMT+16")); 546 //format.setTimeZone(TimeZone.getTimeZone("GMT+16"));
514 return format; 547 return format;
515 } 548 }
app/src/main/res/layout/activity_student_homework.xml
1 <?xml version="1.0" encoding="utf-8"?> 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:app="http://schemas.android.com/apk/res-auto" 3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 xmlns:tools="http://schemas.android.com/tools" 4 xmlns:tools="http://schemas.android.com/tools"
5 android:orientation="vertical" 5 android:orientation="vertical"
6 android:layout_width="match_parent" 6 android:layout_width="match_parent"
7 android:layout_height="match_parent" 7 android:layout_height="match_parent"
8 tools:ignore="HardcodedText"> 8 tools:ignore="HardcodedText">
9 9
10 <androidx.appcompat.widget.Toolbar 10 <androidx.appcompat.widget.Toolbar
11 android:id="@+id/toolbar" 11 android:id="@+id/toolbar"
12 app:navigationIcon="@drawable/svg_back" 12 app:navigationIcon="@drawable/svg_back"
13 android:paddingStart="-8dp" 13 android:paddingStart="-8dp"
14 android:paddingEnd="-8dp" 14 android:paddingEnd="-8dp"
15 android:background="@color/white" 15 android:background="@color/white"
16 android:layout_width="match_parent" 16 android:layout_width="match_parent"
17 android:layout_height="40dp"> 17 android:layout_height="40dp">
18 <TextView 18 <TextView
19 android:id="@+id/tvTitle" 19 android:id="@+id/tvTitle"
20 tools:text="小明的全部作业" 20 tools:text="小明的全部作业"
21 android:textSize="18sp" 21 android:textSize="18sp"
22 android:textColor="#333" 22 android:textColor="#333"
23 android:textStyle="bold" 23 android:textStyle="bold"
24 android:layout_gravity="center" 24 android:layout_gravity="center"
25 android:layout_width="wrap_content" 25 android:layout_width="wrap_content"
26 android:layout_height="wrap_content"/> 26 android:layout_height="wrap_content"/>
27 <ImageView 27 <ImageView
28 android:id="@+id/btnChangeStudent" 28 android:id="@+id/btnChangeStudent"
29 android:src="@drawable/png_ic_change_student" 29 android:src="@drawable/png_ic_change_student"
30 android:layout_gravity="end" 30 android:layout_gravity="end"
31 android:layout_marginEnd="24dp" 31 android:layout_marginEnd="24dp"
32 android:layout_width="20dp" 32 android:layout_width="20dp"
33 android:layout_height="20dp"/> 33 android:layout_height="20dp"/>
34 </androidx.appcompat.widget.Toolbar> 34 </androidx.appcompat.widget.Toolbar>
35 <com.google.android.material.tabs.TabLayout 35 <com.google.android.material.tabs.TabLayout
36 android:id="@+id/tabLayout" 36 android:id="@+id/tabLayout"
37 app:tabMode="fixed" 37 app:tabMode="fixed"
38 app:tabGravity="fill" 38 app:tabGravity="fill"
39 app:tabTextColor="#333333" 39 app:tabTextColor="#333333"
40 app:tabSelectedTextColor="#1C90F3" 40 app:tabSelectedTextColor="#1C90F3"
41 app:tabIndicatorColor="#1C90F3" 41 app:tabIndicatorColor="#1C90F3"
42 app:tabIndicatorHeight="2dp" 42 app:tabIndicatorHeight="2dp"
43 app:tabIndicatorFullWidth="false" 43 app:tabIndicatorFullWidth="false"
44 app:tabTextAppearance="@style/tab_homework" 44 app:tabTextAppearance="@style/tab_homework"
45 app:tabRippleColor="@color/transparent" 45 app:tabRippleColor="@color/transparent"
46 android:background="@color/white" 46 android:background="@color/white"
47 android:layout_width="match_parent" 47 android:layout_width="match_parent"
48 android:layout_height="45dp"/> 48 android:layout_height="45dp"/>
49 <LinearLayout 49 <LinearLayout
50 android:id="@+id/filterBar" 50 android:id="@+id/filterBar"
51 tools:visibility="gone"
52 android:orientation="horizontal" 51 android:orientation="horizontal"
53 android:background="@color/white" 52 android:background="@color/white"
54 android:paddingHorizontal="15dp" 53 android:paddingHorizontal="15dp"
55 android:paddingVertical="11dp" 54 android:paddingVertical="11dp"
56 android:layout_width="match_parent" 55 android:layout_width="match_parent"
57 android:layout_height="wrap_content"> 56 android:layout_height="wrap_content">
58 <androidx.appcompat.widget.AppCompatTextView 57 <androidx.appcompat.widget.AppCompatTextView
59 android:id="@+id/ftSubject" 58 android:id="@+id/ftSubject"
60 android:text="学科" 59 android:text="学科"
61 style="@style/tv_StudentHomeworkFilter"/> 60 style="@style/tv_StudentHomeworkFilter"/>
62 <Space style="@style/empty_space"/> 61 <Space style="@style/empty_space"/>
63 <androidx.appcompat.widget.AppCompatTextView 62 <androidx.appcompat.widget.AppCompatTextView
64 android:id="@+id/ftGrade" 63 android:id="@+id/ftGrade"
65 android:text="年级" 64 android:text="年级"
66 style="@style/tv_StudentHomeworkFilter"/> 65 style="@style/tv_StudentHomeworkFilter"/>
67 <Space style="@style/empty_space"/> 66 <Space style="@style/empty_space"/>
68 <androidx.appcompat.widget.AppCompatTextView 67 <androidx.appcompat.widget.AppCompatTextView
69 android:id="@+id/ftTerm" 68 android:id="@+id/ftTerm"
70 android:text="学期" 69 android:text="学期"
71 style="@style/tv_StudentHomeworkFilter"/> 70 style="@style/tv_StudentHomeworkFilter"/>
72 <Space style="@style/empty_space"/> 71 <Space style="@style/empty_space"/>
73 <androidx.appcompat.widget.AppCompatTextView 72 <androidx.appcompat.widget.AppCompatTextView
74 android:id="@+id/ftFeedback" 73 android:id="@+id/ftFeedback"
75 android:text="反馈状态" 74 android:text="反馈状态"
76 style="@style/tv_StudentHomeworkFilter"/> 75 style="@style/tv_StudentHomeworkFilter"/>
77 </LinearLayout> 76 </LinearLayout>
78 <androidx.legacy.widget.Space 77 <androidx.legacy.widget.Space
79 android:id="@+id/anchorView" 78 android:id="@+id/anchorView"
80 android:layout_width="0dp" 79 android:layout_width="0dp"
81 android:layout_height="0dp"/> 80 android:layout_height="0dp"/>
82 81
83 <FrameLayout 82 <FrameLayout
84 android:id="@+id/weekBar" 83 android:id="@+id/weekBar"
85 android:visibility="gone" 84 android:visibility="gone"
86 android:layout_width="match_parent" 85 android:layout_width="match_parent"
87 android:layout_height="wrap_content"> 86 android:layout_height="wrap_content">
88 <TextView 87 <TextView
89 android:id="@+id/btnGeneralHuyou" 88 android:id="@+id/btnGeneralHuyou"
90 android:visibility="gone" 89 android:visibility="gone"
91 tools:visibility="visible" 90 tools:visibility="visible"
92 android:text="生成本周作业总结" 91 android:text="生成本周作业总结"
93 android:textSize="13sp" 92 android:textSize="13sp"
94 android:textColor="#1C90F3" 93 android:textColor="#1C90F3"
95 android:gravity="center" 94 android:gravity="center"
96 android:textStyle="bold" 95 android:textStyle="bold"
97 android:background="@drawable/btn_general_huyou" 96 android:background="@drawable/btn_general_huyou"
98 android:layout_marginTop="16dp" 97 android:layout_marginTop="16dp"
99 android:layout_marginHorizontal="30dp" 98 android:layout_marginHorizontal="30dp"
100 android:layout_width="match_parent" 99 android:layout_width="match_parent"
101 android:layout_height="35dp" 100 android:layout_height="35dp"
102 tools:ignore="HardcodedText" /> 101 tools:ignore="HardcodedText" />
103 </FrameLayout> 102 </FrameLayout>
104 103
105 <FrameLayout 104 <FrameLayout
106 android:id="@+id/stageBar" 105 android:id="@+id/stageBar"
107 android:visibility="gone" 106 android:visibility="gone"
108 android:layout_width="match_parent" 107 android:layout_width="match_parent"
109 android:layout_height="wrap_content"> 108 android:layout_height="wrap_content">
110 <TextView 109 <TextView
111 android:id="@+id/btnStageHuyou" 110 android:id="@+id/btnStageHuyou"
112 android:text="生成阶段性作业总结" 111 android:text="生成阶段性作业总结"
113 android:textSize="13sp" 112 android:textSize="13sp"
114 android:textColor="#1C90F3" 113 android:textColor="#1C90F3"
115 android:gravity="center" 114 android:gravity="center"
116 android:textStyle="bold" 115 android:textStyle="bold"
117 android:background="@drawable/btn_general_huyou" 116 android:background="@drawable/btn_general_huyou"
118 android:layout_marginTop="16dp" 117 android:layout_marginTop="16dp"
119 android:layout_marginHorizontal="30dp" 118 android:layout_marginHorizontal="30dp"
120 android:layout_width="match_parent" 119 android:layout_width="match_parent"
121 android:layout_height="35dp" 120 android:layout_height="35dp"
122 tools:ignore="HardcodedText" /> 121 tools:ignore="HardcodedText" />
123 </FrameLayout> 122 </FrameLayout>
124 123
125 <androidx.recyclerview.widget.RecyclerView 124 <androidx.recyclerview.widget.RecyclerView
126 android:id="@+id/recyclerView" 125 android:id="@+id/recyclerView"
127 android:background="#F8F8F8" 126 android:background="#F8F8F8"
128 android:orientation="vertical" 127 android:orientation="vertical"
129 app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" 128 app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
130 android:layout_width="match_parent" 129 android:layout_width="match_parent"
131 android:layout_height="match_parent"/> 130 android:layout_height="match_parent"/>
132 </LinearLayout> 131 </LinearLayout>