Commit 5a16e81af6644cdd0fdfc8616aeaeb25b8a739a0

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