Commit 7d8ce5d27289e41065b5b0e2d2bd681afacb1e37

Authored by shixianjie
1 parent 19e49b3575
Exists in master

错题列表展示日期

app/src/main/java/com/hjx/parent/adapter/HomeworkAdapter.java
1 package com.hjx.parent.adapter; 1 package com.hjx.parent.adapter;
2 2
3 import android.view.View;
4 import android.widget.TextView;
5
3 import androidx.annotation.NonNull; 6 import androidx.annotation.NonNull;
4 7
5 import com.chad.library.adapter.base.BaseQuickAdapter; 8 import com.chad.library.adapter.base.BaseQuickAdapter;
6 import com.chad.library.adapter.base.BaseViewHolder; 9 import com.chad.library.adapter.base.BaseViewHolder;
7 import com.hjx.parent.R; 10 import com.hjx.parent.R;
8 import com.prws.common.bean.homework.HomeworkList; 11 import com.prws.common.bean.homework.HomeworkList;
9 12
10 public class HomeworkAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> { 13 public class HomeworkAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> {
11 14
12 public HomeworkAdapter() { 15 public HomeworkAdapter() {
13 super(R.layout.item_homework); 16 super(R.layout.item_homework);
14 } 17 }
15 18
16 @Override 19 @Override
17 protected void convert(@NonNull BaseViewHolder helper, HomeworkList homework) { 20 protected void convert(@NonNull BaseViewHolder helper, HomeworkList homework) {
18 helper.setText(R.id.tvName, homework.getName()); 21 helper.setText(R.id.tvName, homework.getName());
19 helper.setText(R.id.tvGrade, homework.getGrade() + "-" + homework.getTerm()); 22 helper.setText(R.id.tvGrade, homework.getGrade() + "-" + homework.getTerm());
20 int subjectImg; 23 int subjectImg;
21 switch (homework.getSubject()) { 24 switch (homework.getSubject()) {
22 case "语文": 25 case "语文":
23 subjectImg = R.drawable.ic_chinese; 26 subjectImg = R.drawable.ic_chinese;
24 break; 27 break;
25 case "英语": 28 case "英语":
26 subjectImg = R.drawable.ic_english; 29 subjectImg = R.drawable.ic_english;
27 break; 30 break;
28 case "物理": 31 case "物理":
29 subjectImg = R.drawable.ic_physics; 32 subjectImg = R.drawable.ic_physics;
30 break; 33 break;
31 case "化学": 34 case "化学":
32 subjectImg = R.drawable.ic_chemistry; 35 subjectImg = R.drawable.ic_chemistry;
33 break; 36 break;
34 case "数学": 37 case "数学":
35 default: 38 default:
36 subjectImg = R.drawable.ic_math; 39 subjectImg = R.drawable.ic_math;
37 } 40 }
38 helper.setImageResource(R.id.ivSubject, subjectImg); 41 helper.setImageResource(R.id.ivSubject, subjectImg);
42
43 TextView tvDate = helper.getView(R.id.tvDate);
44 int index = getData().indexOf(homework);
45 if (index == 0) {
46 tvDate.setVisibility(View.VISIBLE);
47 } else if (!homework.getFormatTime().equals(getData().get(index - 1).getFormatTime())) {
48 tvDate.setVisibility(View.VISIBLE);
49 } else {
50 tvDate.setVisibility(View.GONE);
51 }
52 tvDate.setText(homework.getFormatTime());
39 } 53 }
40 } 54 }
41 55
app/src/main/java/com/hjx/parent/fragment/ErrorFragment.java
1 package com.hjx.parent.fragment; 1 package com.hjx.parent.fragment;
2 2
3 import static android.app.Activity.RESULT_OK; 3 import static android.app.Activity.RESULT_OK;
4 4
5 import android.annotation.SuppressLint; 5 import android.annotation.SuppressLint;
6 import android.content.Intent; 6 import android.content.Intent;
7 import android.graphics.Bitmap; 7 import android.graphics.Bitmap;
8 import android.graphics.BitmapFactory; 8 import android.graphics.BitmapFactory;
9 import android.net.Uri; 9 import android.net.Uri;
10 import android.os.Bundle; 10 import android.os.Bundle;
11 import android.provider.MediaStore; 11 import android.provider.MediaStore;
12 import android.text.TextUtils; 12 import android.text.TextUtils;
13 import android.util.Log; 13 import android.util.Log;
14 import android.view.LayoutInflater; 14 import android.view.LayoutInflater;
15 import android.view.View; 15 import android.view.View;
16 import android.view.ViewGroup; 16 import android.view.ViewGroup;
17 import android.widget.Toast; 17 import android.widget.Toast;
18 18
19 import androidx.annotation.NonNull; 19 import androidx.annotation.NonNull;
20 import androidx.annotation.Nullable; 20 import androidx.annotation.Nullable;
21 import androidx.core.content.FileProvider; 21 import androidx.core.content.FileProvider;
22 import androidx.recyclerview.widget.RecyclerView; 22 import androidx.recyclerview.widget.RecyclerView;
23 23
24 import com.bumptech.glide.Glide; 24 import com.bumptech.glide.Glide;
25 import com.bumptech.glide.load.resource.bitmap.RoundedCorners; 25 import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
26 import com.bumptech.glide.request.RequestOptions; 26 import com.bumptech.glide.request.RequestOptions;
27 import com.chad.library.adapter.base.BaseQuickAdapter; 27 import com.chad.library.adapter.base.BaseQuickAdapter;
28 import com.chad.library.adapter.base.BaseViewHolder; 28 import com.chad.library.adapter.base.BaseViewHolder;
29 import com.google.android.material.tabs.TabLayout; 29 import com.google.android.material.tabs.TabLayout;
30 import com.google.gson.Gson; 30 import com.google.gson.Gson;
31 import com.hjq.permissions.OnPermissionCallback; 31 import com.hjq.permissions.OnPermissionCallback;
32 import com.hjq.permissions.Permission; 32 import com.hjq.permissions.Permission;
33 import com.hjq.permissions.XXPermissions; 33 import com.hjq.permissions.XXPermissions;
34 import com.hjx.parent.ErrorListActivity; 34 import com.hjx.parent.ErrorListActivity;
35 import com.hjx.parent.ImageActivity; 35 import com.hjx.parent.ImageActivity;
36 import com.hjx.parent.R; 36 import com.hjx.parent.R;
37 import com.hjx.parent.TeacherChooseActivity; 37 import com.hjx.parent.TeacherChooseActivity;
38 import com.hjx.parent.adapter.ErrorAdapter; 38 import com.hjx.parent.adapter.ErrorAdapter;
39 import com.hjx.parent.adapter.HomeworkAdapter; 39 import com.hjx.parent.adapter.HomeworkAdapter;
40 import com.hjx.parent.bean.StudentBean; 40 import com.hjx.parent.bean.StudentBean;
41 import com.hjx.parent.databinding.FragmentErrorBookBinding; 41 import com.hjx.parent.databinding.FragmentErrorBookBinding;
42 import com.hjx.parent.rx.BaseRxFragment; 42 import com.hjx.parent.rx.BaseRxFragment;
43 import com.prws.common.bean.PageInfo; 43 import com.prws.common.bean.PageInfo;
44 import com.prws.common.bean.ResponseResult; 44 import com.prws.common.bean.ResponseResult;
45 import com.prws.common.bean.TopicBean; 45 import com.prws.common.bean.TopicBean;
46 import com.prws.common.net.NetWorks; 46 import com.prws.common.net.NetWorks;
47 import com.prws.common.utils.BitmapUtils; 47 import com.prws.common.utils.BitmapUtils;
48 import com.prws.common.utils.CommonUtil; 48 import com.prws.common.utils.CommonUtil;
49 import com.prws.common.utils.ScreenUtils; 49 import com.prws.common.utils.ScreenUtils;
50 import com.prws.common.utils.SharedPreferencesUtil; 50 import com.prws.common.utils.SharedPreferencesUtil;
51 import com.prws.common.utils.dialog.MyButtomDialog; 51 import com.prws.common.utils.dialog.MyButtomDialog;
52 import com.trello.rxlifecycle2.android.RxLifecycleAndroid; 52 import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
53 import com.zhangteng.imagepicker.bean.ImageInfo; 53 import com.zhangteng.imagepicker.bean.ImageInfo;
54 import com.zhangteng.imagepicker.config.ImagePickerConfig; 54 import com.zhangteng.imagepicker.config.ImagePickerConfig;
55 import com.zhangteng.imagepicker.config.ImagePickerEnum; 55 import com.zhangteng.imagepicker.config.ImagePickerEnum;
56 import com.zhangteng.imagepicker.config.ImagePickerOpen; 56 import com.zhangteng.imagepicker.config.ImagePickerOpen;
57 import com.zhangteng.imagepicker.imageloader.GlideImageLoader; 57 import com.zhangteng.imagepicker.imageloader.GlideImageLoader;
58 import com.zhangteng.utils.IHandlerCallBack; 58 import com.zhangteng.utils.IHandlerCallBack;
59 59
60 import java.io.File; 60 import java.io.File;
61 import java.util.ArrayList; 61 import java.util.ArrayList;
62 import java.util.Arrays; 62 import java.util.Arrays;
63 import java.util.Collections;
63 import java.util.HashMap; 64 import java.util.HashMap;
64 import java.util.List; 65 import java.util.List;
65 import java.util.Map; 66 import java.util.Map;
66 67
67 import io.reactivex.Observer; 68 import io.reactivex.Observer;
68 import io.reactivex.android.schedulers.AndroidSchedulers; 69 import io.reactivex.android.schedulers.AndroidSchedulers;
69 import io.reactivex.disposables.Disposable; 70 import io.reactivex.disposables.Disposable;
70 import io.reactivex.schedulers.Schedulers; 71 import io.reactivex.schedulers.Schedulers;
71 72
72 public class ErrorFragment extends BaseRxFragment<FragmentErrorBookBinding> { 73 public class ErrorFragment extends BaseRxFragment<FragmentErrorBookBinding> {
73 StudentBean studentBean; 74 StudentBean studentBean;
74 private int subject; 75 private int subject;
75 private ErrorAdapter errorAdapter; 76 private ErrorAdapter errorAdapter;
76 private HomeworkAdapter homeworkAdapter; 77 private HomeworkAdapter homeworkAdapter;
77 private String filePath; 78 private String filePath;
78 79
79 @Override 80 @Override
80 protected FragmentErrorBookBinding onCreateViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent) { 81 protected FragmentErrorBookBinding onCreateViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent) {
81 return FragmentErrorBookBinding.inflate(inflater, parent, false); 82 return FragmentErrorBookBinding.inflate(inflater, parent, false);
82 } 83 }
83 84
84 public void refreshStudent() { 85 public void refreshStudent() {
85 String student = (String) SharedPreferencesUtil.getData("student", ""); 86 String student = (String) SharedPreferencesUtil.getData("student", "");
86 try { 87 try {
87 studentBean = new Gson().fromJson(student, StudentBean.class); 88 studentBean = new Gson().fromJson(student, StudentBean.class);
88 getBinding().tvChoose.setText(studentBean.getStuName()); 89 getBinding().tvChoose.setText(studentBean.getStuName());
89 } catch (Exception e) { 90 } catch (Exception e) {
90 e.printStackTrace(); 91 e.printStackTrace();
91 } 92 }
92 } 93 }
93 94
94 @Override 95 @Override
95 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 96 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
96 super.onViewCreated(view, savedInstanceState); 97 super.onViewCreated(view, savedInstanceState);
97 String photo = (String) SharedPreferencesUtil.getData("photo", ""); 98 String photo = (String) SharedPreferencesUtil.getData("photo", "");
98 if (!TextUtils.isEmpty(photo)) { 99 if (!TextUtils.isEmpty(photo)) {
99 RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 45)); 100 RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 45));
100 RequestOptions options = RequestOptions.bitmapTransform(roundedCorners); 101 RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
101 Glide.with(getContext()).load(photo).apply(options).into(getBinding().ivStudent); 102 Glide.with(getContext()).load(photo).apply(options).into(getBinding().ivStudent);
102 } 103 }
103 String name = (String) SharedPreferencesUtil.getData("name", ""); 104 String name = (String) SharedPreferencesUtil.getData("name", "");
104 getBinding().tvName.setText(name); 105 getBinding().tvName.setText(name);
105 refreshStudent(); 106 refreshStudent();
106 getBinding().tvChoose.setOnClickListener(v -> startActivity(new Intent(getContext(), TeacherChooseActivity.class))); 107 getBinding().tvChoose.setOnClickListener(v -> startActivity(new Intent(getContext(), TeacherChooseActivity.class)));
107 getBinding().rlTakePhoto.setOnClickListener(v -> takePhoto(0)); 108 getBinding().rlTakePhoto.setOnClickListener(v -> takePhoto(0));
108 getBinding().flEntryHomework.setOnClickListener(v -> takePhoto(1)); 109 getBinding().flEntryHomework.setOnClickListener(v -> takePhoto(1));
109 BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_subject, Arrays.asList(getResources().getStringArray(R.array.filter_subject))) { 110 BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_subject, Arrays.asList(getResources().getStringArray(R.array.filter_subject))) {
110 @Override 111 @Override
111 public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { 112 public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
112 113
113 } 114 }
114 115
115 @Override 116 @Override
116 protected void convert(@NonNull BaseViewHolder item, Object o) { 117 protected void convert(@NonNull BaseViewHolder item, Object o) {
117 item.setText(R.id.tv_subject, getResources().getStringArray(R.array.filter_subject)[item.getAdapterPosition()]); 118 item.setText(R.id.tv_subject, getResources().getStringArray(R.array.filter_subject)[item.getAdapterPosition()]);
118 switch (item.getAdapterPosition()) { 119 switch (item.getAdapterPosition()) {
119 case 0: 120 case 0:
120 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chinese); 121 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chinese);
121 break; 122 break;
122 case 1: 123 case 1:
123 item.setImageResource(R.id.iv_subject, R.mipmap.ic_math); 124 item.setImageResource(R.id.iv_subject, R.mipmap.ic_math);
124 break; 125 break;
125 case 2: 126 case 2:
126 item.setImageResource(R.id.iv_subject, R.mipmap.ic_english); 127 item.setImageResource(R.id.iv_subject, R.mipmap.ic_english);
127 break; 128 break;
128 case 3: 129 case 3:
129 item.setImageResource(R.id.iv_subject, R.mipmap.ic_physics); 130 item.setImageResource(R.id.iv_subject, R.mipmap.ic_physics);
130 break; 131 break;
131 case 4: 132 case 4:
132 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chemistry); 133 item.setImageResource(R.id.iv_subject, R.mipmap.ic_chemistry);
133 break; 134 break;
134 } 135 }
135 ViewGroup.LayoutParams layoutParams = item.getView(R.id.rl_subject).getLayoutParams(); 136 ViewGroup.LayoutParams layoutParams = item.getView(R.id.rl_subject).getLayoutParams();
136 layoutParams.width = (CommonUtil.getScreenWidth(getContext()) - CommonUtil.dpToPx(getContext(), 30)) / 4; 137 layoutParams.width = (CommonUtil.getScreenWidth(getContext()) - CommonUtil.dpToPx(getContext(), 30)) / 4;
137 item.getView(R.id.rl_subject).setLayoutParams(layoutParams); 138 item.getView(R.id.rl_subject).setLayoutParams(layoutParams);
138 item.getConvertView().setOnClickListener(v -> { 139 item.getConvertView().setOnClickListener(v -> {
139 if (subject != item.getAdapterPosition()) { 140 if (subject != item.getAdapterPosition()) {
140 subject = item.getAdapterPosition(); 141 subject = item.getAdapterPosition();
141 String subStr = getResources().getStringArray(R.array.filter_subject)[subject]; 142 String subStr = getResources().getStringArray(R.array.filter_subject)[subject];
142 if (binding.tabLayout.getSelectedTabPosition() == 0) { 143 if (binding.tabLayout.getSelectedTabPosition() == 0) {
143 getError(subStr); 144 getError(subStr);
144 } else { 145 } else {
145 // nothing can do 146 // nothing can do
146 } 147 }
147 } 148 }
148 }); 149 });
149 } 150 }
150 }; 151 };
151 getBinding().rvSubject.setAdapter(adapter); 152 getBinding().rvSubject.setAdapter(adapter);
152 subject = 0; 153 subject = 0;
153 getError(getResources().getStringArray(R.array.filter_subject)[subject]); 154 getError(getResources().getStringArray(R.array.filter_subject)[subject]);
154 getBinding().llAll.setOnClickListener(v -> { 155 getBinding().llAll.setOnClickListener(v -> {
155 Intent intent = new Intent(getContext(), ErrorListActivity.class); 156 Intent intent = new Intent(getContext(), ErrorListActivity.class);
156 startActivity(intent); 157 startActivity(intent);
157 }); 158 });
158 159
159 errorAdapter = new ErrorAdapter(getActivity(), new ArrayList<>(), false); 160 errorAdapter = new ErrorAdapter(getActivity(), new ArrayList<>(), false);
160 homeworkAdapter = new HomeworkAdapter(); 161 homeworkAdapter = new HomeworkAdapter();
161 binding.rvMain.setAdapter(errorAdapter); 162 binding.rvMain.setAdapter(errorAdapter);
162 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近错题")); 163 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近错题"));
163 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近作业")); 164 binding.tabLayout.addTab(binding.tabLayout.newTab().setText("最近作业"));
164 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 165 binding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
165 @Override 166 @Override
166 public void onTabSelected(TabLayout.Tab tab) { 167 public void onTabSelected(TabLayout.Tab tab) {
167 if (tab.getPosition() == 0) { 168 if (tab.getPosition() == 0) {
168 binding.rvMain.setAdapter(errorAdapter); 169 binding.rvMain.setAdapter(errorAdapter);
169 binding.rvMain.setVisibility(errorAdapter.list.isEmpty() ? View.GONE : View.VISIBLE); 170 binding.rvMain.setVisibility(errorAdapter.list.isEmpty() ? View.GONE : View.VISIBLE);
170 binding.llEmpty.setVisibility(errorAdapter.list.isEmpty() ? View.VISIBLE : View.GONE); 171 binding.llEmpty.setVisibility(errorAdapter.list.isEmpty() ? View.VISIBLE : View.GONE);
171 } else { 172 } else {
172 binding.rvMain.setAdapter(homeworkAdapter); 173 binding.rvMain.setAdapter(homeworkAdapter);
173 binding.rvMain.setVisibility(View.VISIBLE); 174 binding.rvMain.setVisibility(View.VISIBLE);
174 binding.llEmpty.setVisibility(View.GONE); 175 binding.llEmpty.setVisibility(View.GONE);
175 } 176 }
176 } 177 }
177 @Override 178 @Override
178 public void onTabUnselected(TabLayout.Tab tab) { 179 public void onTabUnselected(TabLayout.Tab tab) {
179 } 180 }
180 @Override 181 @Override
181 public void onTabReselected(TabLayout.Tab tab) { 182 public void onTabReselected(TabLayout.Tab tab) {
182 } 183 }
183 }); 184 });
184 } 185 }
185 186
186 private void takePhoto(int type) { 187 private void takePhoto(int type) {
187 if (!XXPermissions.isGranted(getContext(), Permission.CAMERA, Permission.WRITE_EXTERNAL_STORAGE)) { 188 if (!XXPermissions.isGranted(getContext(), Permission.CAMERA, Permission.WRITE_EXTERNAL_STORAGE)) {
188 XXPermissions.with(getContext()) 189 XXPermissions.with(getContext())
189 // 申请多个权限 190 // 申请多个权限
190 .permission(Permission.CAMERA).request(new OnPermissionCallback() { 191 .permission(Permission.CAMERA).request(new OnPermissionCallback() {
191 @Override 192 @Override
192 public void onGranted(List<String> permissions, boolean all) { 193 public void onGranted(List<String> permissions, boolean all) {
193 if (all) { 194 if (all) {
194 //开启扫码界面 195 //开启扫码界面
195 showButtonDialog(type); 196 showButtonDialog(type);
196 } else { 197 } else {
197 Toast.makeText(getContext(), "需要权限", Toast.LENGTH_SHORT).show(); 198 Toast.makeText(getContext(), "需要权限", Toast.LENGTH_SHORT).show();
198 } 199 }
199 } 200 }
200 201
201 @Override 202 @Override
202 public void onDenied(List<String> permissions, boolean never) { 203 public void onDenied(List<String> permissions, boolean never) {
203 XXPermissions.startPermissionActivity(getContext(), permissions); 204 XXPermissions.startPermissionActivity(getContext(), permissions);
204 } 205 }
205 }); 206 });
206 } else { 207 } else {
207 showButtonDialog(type); 208 showButtonDialog(type);
208 } 209 }
209 } 210 }
210 211
211 private void showButtonDialog(int type) { 212 private void showButtonDialog(int type) {
212 MyButtomDialog dialog = new MyButtomDialog(getActivity(), R.style.BottomSheetDialog); 213 MyButtomDialog dialog = new MyButtomDialog(getActivity(), R.style.BottomSheetDialog);
213 View bottomView = LayoutInflater.from(getActivity()).inflate(R.layout.bottom_sheet_layout, null); 214 View bottomView = LayoutInflater.from(getActivity()).inflate(R.layout.bottom_sheet_layout, null);
214 dialog.setContentView(bottomView); 215 dialog.setContentView(bottomView);
215 bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() { 216 bottomView.findViewById(R.id.take_photo).setOnClickListener(new View.OnClickListener() {
216 @Override 217 @Override
217 public void onClick(View view) { 218 public void onClick(View view) {
218 dialog.dismiss(); 219 dialog.dismiss();
219 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 220 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
220 //确保有相机来处理Intent 221 //确保有相机来处理Intent
221 filePath = requireActivity().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; 222 filePath = requireActivity().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg";
222 File photoFile = new File(filePath); 223 File photoFile = new File(filePath);
223 224
224 //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri 225 //适配Android 7.0文件权限,通过FileProvider创建一个content类型的Uri
225 Uri photoUri = FileProvider.getUriForFile(requireActivity(), "com.hjx.parent.fileprovider", photoFile); 226 Uri photoUri = FileProvider.getUriForFile(requireActivity(), "com.hjx.parent.fileprovider", photoFile);
226 takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 227 takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
227 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 228 takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
228 startActivityForResult(takePictureIntent, type == 0 ? 0xA01 : 0xA02); 229 startActivityForResult(takePictureIntent, type == 0 ? 0xA01 : 0xA02);
229 } 230 }
230 }); 231 });
231 bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() { 232 bottomView.findViewById(R.id.choose_photo).setOnClickListener(new View.OnClickListener() {
232 @Override 233 @Override
233 public void onClick(View view) { 234 public void onClick(View view) {
234 dialog.dismiss(); 235 dialog.dismiss();
235 ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder().provider(getActivity().getPackageName() + ".fileprovider").imageLoader(new GlideImageLoader()) //图片加载器 236 ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder().provider(getActivity().getPackageName() + ".fileprovider").imageLoader(new GlideImageLoader()) //图片加载器
236 .iHandlerCallBack(new HandlerCallBack(type)) //图片选择器生命周期监听(直接打开摄像头时无效) 237 .iHandlerCallBack(new HandlerCallBack(type)) //图片选择器生命周期监听(直接打开摄像头时无效)
237 .multiSelect(true) //是否多选 238 .multiSelect(true) //是否多选
238 .isShowCamera(false).isVideoPicker(false) //是否选择视频 默认false 239 .isShowCamera(false).isVideoPicker(false) //是否选择视频 默认false
239 .isImagePicker(true).imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型 240 .isImagePicker(true).imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型
240 .maxImageSelectable(5) //图片可选择数 241 .maxImageSelectable(5) //图片可选择数
241 .maxHeight(1920) //图片最大高度 242 .maxHeight(1920) //图片最大高度
242 .maxWidth(1920) //图片最大宽度 243 .maxWidth(1920) //图片最大宽度
243 .maxImageSize(3) //图片最大大小Mb 244 .maxImageSize(3) //图片最大大小Mb
244 .isCrop(false).pathList(new ArrayList<>()).pickerThemeColorRes(R.color.image_picker_white).pickerTitleColorRes(R.color.image_picker_text_black).cropThemeColorRes(R.color.image_picker_white).cropTitleColorRes(R.color.image_picker_text_black).pickerBackRes(R.mipmap.image_picker_back_black).pickerFolderRes(R.mipmap.image_picker_folder_black).build(); 245 .isCrop(false).pathList(new ArrayList<>()).pickerThemeColorRes(R.color.image_picker_white).pickerTitleColorRes(R.color.image_picker_text_black).cropThemeColorRes(R.color.image_picker_white).cropTitleColorRes(R.color.image_picker_text_black).pickerBackRes(R.mipmap.image_picker_back_black).pickerFolderRes(R.mipmap.image_picker_folder_black).build();
245 ImagePickerOpen.getInstance().setImagePickerConfig(imagePickerConfig).pathList(new ArrayList<>()).open(getActivity()); 246 ImagePickerOpen.getInstance().setImagePickerConfig(imagePickerConfig).pathList(new ArrayList<>()).open(getActivity());
246 247
247 } 248 }
248 }); 249 });
249 bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { 250 bottomView.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
250 @Override 251 @Override
251 public void onClick(View view) { 252 public void onClick(View view) {
252 dialog.dismiss(); 253 dialog.dismiss();
253 } 254 }
254 }); 255 });
255 dialog.show(); 256 dialog.show();
256 } 257 }
257 258
258 @SuppressLint("CheckResult") 259 @SuppressLint("CheckResult")
259 protected void getHomework() { 260 protected void getHomework() {
260 if (studentBean == null) return; 261 if (studentBean == null) return;
261 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), studentBean.getStuId()) 262 NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), studentBean.getStuId())
262 .subscribeOn(Schedulers.io()) 263 .subscribeOn(Schedulers.io())
263 .observeOn(AndroidSchedulers.mainThread()) 264 .observeOn(AndroidSchedulers.mainThread())
264 .compose(RxLifecycleAndroid.bindFragment(getRxLifecycle())) 265 .compose(RxLifecycleAndroid.bindFragment(getRxLifecycle()))
265 .map(ResponseResult::getData) 266 .map(ResponseResult::getData)
266 .subscribe((data, th) -> { 267 .subscribe((data, th) -> {
267 if (th != null) th.printStackTrace(); 268 if (th != null) th.printStackTrace();
269 if (data != null) {
270 Collections.sort(data);
271 }
268 homeworkAdapter.setNewData(data); 272 homeworkAdapter.setNewData(data);
269 }); 273 });
270 } 274 }
271 275
272 private void getError(String subject) { 276 private void getError(String subject) {
273 if (studentBean == null) { 277 if (studentBean == null) {
274 return; 278 return;
275 } 279 }
276 Map<String, Object> map = new HashMap<>(); 280 Map<String, Object> map = new HashMap<>();
277 map.put("subject", subject); 281 map.put("subject", subject);
278 map.put("stuId", studentBean.getStuId()); 282 map.put("stuId", studentBean.getStuId());
279 map.put("pageSize", 5); 283 map.put("pageSize", 5);
280 map.put("pageNum", 1); 284 map.put("pageNum", 1);
281 NetWorks.getError(map, new Observer<ResponseResult<PageInfo<TopicBean>>>() { 285 NetWorks.getError(map, new Observer<ResponseResult<PageInfo<TopicBean>>>() {
282 @Override 286 @Override
283 public void onSubscribe(Disposable d) { 287 public void onSubscribe(Disposable d) {
284 } 288 }
285 @Override 289 @Override
286 public void onNext(ResponseResult<PageInfo<TopicBean>> result) { 290 public void onNext(ResponseResult<PageInfo<TopicBean>> result) {
287 if (result.getData() != null && result.getCode() == 200) { 291 if (result.getData() != null && result.getCode() == 200) {
288 List<TopicBean> topicBeans = result.getData().getList(); 292 List<TopicBean> topicBeans = result.getData().getList();
289 errorAdapter.refresh(topicBeans); 293 errorAdapter.refresh(topicBeans);
290 if (binding.tabLayout.getSelectedTabPosition() == 0) { 294 if (binding.tabLayout.getSelectedTabPosition() == 0) {
291 if (topicBeans.size() > 0) { 295 if (topicBeans.size() > 0) {
292 getBinding().rvMain.setVisibility(View.VISIBLE); 296 getBinding().rvMain.setVisibility(View.VISIBLE);
293 getBinding().llEmpty.setVisibility(View.GONE); 297 getBinding().llEmpty.setVisibility(View.GONE);
294 } else { 298 } else {
295 getBinding().rvMain.setVisibility(View.GONE); 299 getBinding().rvMain.setVisibility(View.GONE);
296 getBinding().llEmpty.setVisibility(View.VISIBLE); 300 getBinding().llEmpty.setVisibility(View.VISIBLE);
297 } 301 }
298 } 302 }
299 } 303 }
300 } 304 }
301 @Override 305 @Override
302 public void onError(Throwable e) { 306 public void onError(Throwable e) {
303 e.printStackTrace(); 307 e.printStackTrace();
304 } 308 }
305 @Override 309 @Override
306 public void onComplete() { 310 public void onComplete() {
307 } 311 }
308 }); 312 });
309 } 313 }
310 314
311 @Override 315 @Override
312 public void onResume() { 316 public void onResume() {
313 super.onResume(); 317 super.onResume();
314 getError(getResources().getStringArray(R.array.filter_subject)[subject]); 318 getError(getResources().getStringArray(R.array.filter_subject)[subject]);
315 getHomework(); 319 getHomework();
316 } 320 }
317 321
318 public class HandlerCallBack implements IHandlerCallBack<ImageInfo> { 322 public class HandlerCallBack implements IHandlerCallBack<ImageInfo> {
319 int type; 323 int type;
320 public HandlerCallBack(int type) { 324 public HandlerCallBack(int type) {
321 this.type = type; 325 this.type = type;
322 } 326 }
323 327
324 private String TAG = "---ImagePicker---"; 328 private String TAG = "---ImagePicker---";
325 List<ImageInfo> photoList = new ArrayList<>(); 329 List<ImageInfo> photoList = new ArrayList<>();
326 330
327 @Override 331 @Override
328 public void onStart() { 332 public void onStart() {
329 Log.i(TAG, "onStart: 开启"); 333 Log.i(TAG, "onStart: 开启");
330 } 334 }
331 335
332 @Override 336 @Override
333 public void onSuccess(List<ImageInfo> photoList) { 337 public void onSuccess(List<ImageInfo> photoList) {
334 this.photoList = photoList; 338 this.photoList = photoList;
335 Log.i(TAG, "onSuccess: 返回数据"); 339 Log.i(TAG, "onSuccess: 返回数据");
336 } 340 }
337 341
338 @Override 342 @Override
339 public void onCancel() { 343 public void onCancel() {
340 Log.i(TAG, "onCancel: 取消"); 344 Log.i(TAG, "onCancel: 取消");
341 } 345 }
342 346
343 @Override 347 @Override
344 public void onFinish(List<ImageInfo> selectImage) { 348 public void onFinish(List<ImageInfo> selectImage) {
345 if (selectImage.size() == photoList.size()) { 349 if (selectImage.size() == photoList.size()) {
346 ArrayList<String> strings = new ArrayList<>(); 350 ArrayList<String> strings = new ArrayList<>();
347 Intent intent = new Intent(getActivity(), ImageActivity.class); 351 Intent intent = new Intent(getActivity(), ImageActivity.class);
348 for (ImageInfo imageInfo : selectImage) { 352 for (ImageInfo imageInfo : selectImage) {
349 strings.add(imageInfo.getPath()); 353 strings.add(imageInfo.getPath());
350 } 354 }
351 intent.putStringArrayListExtra("images", strings); 355 intent.putStringArrayListExtra("images", strings);
352 intent.putExtra("type", type); 356 intent.putExtra("type", type);
353 startActivity(intent); 357 startActivity(intent);
354 } 358 }
355 } 359 }
356 360
357 @Override 361 @Override
358 public void onError() { 362 public void onError() {
359 Log.i(TAG, "onError: 出错"); 363 Log.i(TAG, "onError: 出错");
360 } 364 }
361 } 365 }
362 366
363 @Override 367 @Override
364 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { 368 public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
365 super.onActivityResult(requestCode, resultCode, data); 369 super.onActivityResult(requestCode, resultCode, data);
366 if (resultCode != RESULT_OK) return; 370 if (resultCode != RESULT_OK) return;
367 if (requestCode == 0xA01 || requestCode == 0xA02 && !TextUtils.isEmpty(filePath)) { 371 if (requestCode == 0xA01 || requestCode == 0xA02 && !TextUtils.isEmpty(filePath)) {
368 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath)); 372 Bitmap b = BitmapUtils.compress(BitmapFactory.decodeFile(filePath));
369 String path = getContext().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg"; 373 String path = getContext().getExternalFilesDir("images").getPath() + "/" + System.currentTimeMillis() + CommonUtil.getStr() + ".jpg";
370 CommonUtil.saveBitmapToUri(b, path); 374 CommonUtil.saveBitmapToUri(b, path);
371 ArrayList<String> strings = new ArrayList<>(); 375 ArrayList<String> strings = new ArrayList<>();
372 Intent intent = new Intent(getContext(), ImageActivity.class); 376 Intent intent = new Intent(getContext(), ImageActivity.class);
373 strings.add(path); 377 strings.add(path);
374 intent.putStringArrayListExtra("images", strings); 378 intent.putStringArrayListExtra("images", strings);
375 intent.putExtra("type", requestCode == 0xA01 ? 0 : 1); 379 intent.putExtra("type", requestCode == 0xA01 ? 0 : 1);
376 startActivity(intent); 380 startActivity(intent);
377 } 381 }
378 } 382 }
379 } 383 }
380 384
libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java
1 package com.prws.common.bean.homework; 1 package com.prws.common.bean.homework;
2 2
3 import com.google.gson.annotations.SerializedName; 3 import com.google.gson.annotations.SerializedName;
4 4
5 import java.text.SimpleDateFormat;
5 import java.util.Date; 6 import java.util.Date;
7 import java.util.Locale;
6 8
7 public class HomeworkList { 9 public class HomeworkList implements Comparable<HomeworkList> {
8 10
9 @SerializedName(value = "homeworkId", alternate = "id") 11 @SerializedName(value = "homeworkId", alternate = "id")
10 private Integer homeworkId; 12 private Integer homeworkId;
11 @SerializedName(value = "name", alternate = "homeworkName") 13 @SerializedName(value = "name", alternate = "homeworkName")
12 private String name; 14 private String name;
13 @SerializedName("grade") 15 @SerializedName("grade")
14 private String grade; 16 private String grade;
15 @SerializedName("term") 17 @SerializedName("term")
16 private String term; 18 private String term;
17 @SerializedName("subject") 19 @SerializedName("subject")
18 private String subject; 20 private String subject;
19 private int completeFlag; 21 private int completeFlag;
20 22
21 private Integer total; 23 private Integer total;
22 private Integer right; 24 private Integer right;
23 25
24 public Date uploadTime; 26 public Date uploadTime;
25 27
26 public Integer getTotal() { 28 public Integer getTotal() {
27 return total; 29 return total;
28 } 30 }
29 31
30 public Integer getRight() { 32 public Integer getRight() {
31 return right; 33 return right;
32 } 34 }
33 35
34 public void setRight(Integer right) { 36 public void setRight(Integer right) {
35 this.right = right; 37 this.right = right;
36 } 38 }
37 39
38 public void setTotal(Integer total) { 40 public void setTotal(Integer total) {
39 this.total = total; 41 this.total = total;
40 } 42 }
41 43
42 public void setId(Integer id) { 44 public void setId(Integer id) {
43 this.homeworkId = id; 45 this.homeworkId = id;
44 } 46 }
45 47
46 public void setName(String name) { 48 public void setName(String name) {
47 this.name = name; 49 this.name = name;
48 } 50 }
49 51
50 public void setGrade(String grade) { 52 public void setGrade(String grade) {
51 this.grade = grade; 53 this.grade = grade;
52 } 54 }
53 55
54 public void setTerm(String term) { 56 public void setTerm(String term) {
55 this.term = term; 57 this.term = term;
56 } 58 }
57 59
58 public void setSubject(String subject) { 60 public void setSubject(String subject) {
59 this.subject = subject; 61 this.subject = subject;
60 } 62 }
61 63
62 public void setCompleteFlag(int completeFlag) { 64 public void setCompleteFlag(int completeFlag) {
63 this.completeFlag = completeFlag; 65 this.completeFlag = completeFlag;
64 } 66 }
65 67
66 public Integer getId() { 68 public Integer getId() {
67 return homeworkId; 69 return homeworkId;
68 } 70 }
69 71
70 public String getName() { 72 public String getName() {
71 return name; 73 return name;
72 } 74 }
73 75
74 public String getGrade() { 76 public String getGrade() {
75 return grade; 77 return grade;
76 } 78 }
77 79
78 public String getTerm() { 80 public String getTerm() {
79 return term; 81 return term;
80 } 82 }
81 83
82 public String getSubject() { 84 public String getSubject() {
83 return subject; 85 return subject;
84 } 86 }
85 87
86 public int getCompleteFlag() { 88 public int getCompleteFlag() {
87 return completeFlag; 89 return completeFlag;
88 } 90 }
89 91
92 @Override
93 public int compareTo(HomeworkList other) {
94 long time1 = this.uploadTime == null ? 0 : this.uploadTime.getTime();
95 long time2 = other.uploadTime == null ? 0 : other.uploadTime.getTime();
96 return (int) (time2 - time1);
97 }
98
99 private String time;
100 private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
101 public String getFormatTime() {
102 if (uploadTime == null) return "";
103 if (time != null) return time;
104 time = format.format(uploadTime);
105 return time;
106 }
90 } 107 }
91 108