Commit b49795b72f73aba8822f002ab66242c91cf053cd
1 parent
6c927b5aa1
Exists in
master
作业反馈
Showing
11 changed files
with
86 additions
and
28 deletions
Show diff stats
.idea/deploymentTargetDropDown.xml
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <project version="4"> | 2 | <project version="4"> |
3 | <component name="deploymentTargetDropDown"> | 3 | <component name="deploymentTargetDropDown"> |
4 | <value> | 4 | <value> |
5 | <entry key="app"> | 5 | <entry key="app"> |
6 | <State> | 6 | <State /> |
7 | <runningDeviceTargetSelectedWithDropDown> | ||
8 | <Target> | ||
9 | <type value="RUNNING_DEVICE_TARGET" /> | ||
10 | <deviceKey> | ||
11 | <Key> | ||
12 | <type value="SERIAL_NUMBER" /> | ||
13 | <value value="192.168.3.176:39671" /> | ||
14 | </Key> | ||
15 | </deviceKey> | ||
16 | </Target> | ||
17 | </runningDeviceTargetSelectedWithDropDown> | ||
18 | <timeTargetWasSelectedWithDropDown value="2024-09-29T02:03:12.057655600Z" /> | ||
19 | </State> | ||
20 | </entry> | 7 | </entry> |
21 | </value> | 8 | </value> |
22 | </component> | 9 | </component> |
23 | </project> | 10 | </project> |
app/src/main/AndroidManifest.xml
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
3 | xmlns:tools="http://schemas.android.com/tools" | 3 | xmlns:tools="http://schemas.android.com/tools" |
4 | package="com.hjx.parent"> | 4 | package="com.hjx.parent"> |
5 | 5 | ||
6 | 6 | ||
7 | <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> | 7 | <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> |
8 | <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许程序改变网络链接状态 --> | 8 | <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许程序改变网络链接状态 --> |
9 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允许程序访问访问WIFI网络状态信息 --> | 9 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允许程序访问访问WIFI网络状态信息 --> |
10 | <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 允许程序改变WIFI链接状态 --> | 10 | <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 允许程序改变WIFI链接状态 --> |
11 | <!-- 6.0系统需要添加权限才能获得wifi列表 --> | 11 | <!-- 6.0系统需要添加权限才能获得wifi列表 --> |
12 | <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> | 12 | <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> |
13 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | 13 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> |
14 | <uses-permission android:name="android.permission.INTERNET" /> | 14 | <uses-permission android:name="android.permission.INTERNET" /> |
15 | <uses-permission android:name="android.permission.RECORD_AUDIO" /> | 15 | <uses-permission android:name="android.permission.RECORD_AUDIO" /> |
16 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | 16 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
17 | 17 | ||
18 | <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> | 18 | <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> |
19 | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> | 19 | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> |
20 | <uses-permission android:name="android.permission.WAKE_LOCK" /> | 20 | <uses-permission android:name="android.permission.WAKE_LOCK" /> |
21 | <uses-permission android:name="android.permission.CAMERA" /> | 21 | <uses-permission android:name="android.permission.CAMERA" /> |
22 | <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> | 22 | <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> |
23 | <uses-permission android:name="android.permission.VIBRATE" /> | 23 | <uses-permission android:name="android.permission.VIBRATE" /> |
24 | <uses-permission | 24 | <uses-permission |
25 | android:name="android.permission.WRITE_EXTERNAL_STORAGE" | 25 | android:name="android.permission.WRITE_EXTERNAL_STORAGE" |
26 | tools:ignore="ScopedStorage" /> | 26 | tools:ignore="ScopedStorage" /> |
27 | <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> | 27 | <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> |
28 | <uses-permission android:name="android.permission.GET_PACKAGE_SIZE" /> | 28 | <uses-permission android:name="android.permission.GET_PACKAGE_SIZE" /> |
29 | 29 | ||
30 | <uses-permission | 30 | <uses-permission |
31 | android:name="android.permission.MANAGE_EXTERNAL_STORAGE" | 31 | android:name="android.permission.MANAGE_EXTERNAL_STORAGE" |
32 | tools:ignore="ScopedStorage" /> | 32 | tools:ignore="ScopedStorage" /> |
33 | 33 | ||
34 | <application | 34 | <application |
35 | android:name=".App" | 35 | android:name=".App" |
36 | android:allowBackup="true" | 36 | android:allowBackup="true" |
37 | android:icon="@mipmap/icon" | 37 | android:icon="@mipmap/icon" |
38 | android:label="@string/app_name" | 38 | android:label="@string/app_name" |
39 | android:networkSecurityConfig="@xml/network_security_config" | 39 | android:networkSecurityConfig="@xml/network_security_config" |
40 | android:supportsRtl="true" | 40 | android:supportsRtl="true" |
41 | android:theme="@style/Theme.AppCompat.Light.NoActionBar"> | 41 | android:theme="@style/Theme.AppCompat.Light.NoActionBar"> |
42 | <activity | 42 | <activity |
43 | android:name=".LoginActivity" | 43 | android:name=".LoginActivity" |
44 | android:exported="true" | 44 | android:exported="true" |
45 | android:screenOrientation="portrait" | 45 | android:screenOrientation="portrait" |
46 | android:theme="@style/ThemeSplash"> | 46 | android:theme="@style/ThemeSplash"> |
47 | <intent-filter> | 47 | <intent-filter> |
48 | <action android:name="android.intent.action.MAIN" /> | 48 | <action android:name="android.intent.action.MAIN" /> |
49 | <category android:name="android.intent.category.LAUNCHER" /> | 49 | <category android:name="android.intent.category.LAUNCHER" /> |
50 | </intent-filter> | 50 | </intent-filter> |
51 | </activity> | 51 | </activity> |
52 | <activity | 52 | <activity |
53 | android:name=".MainActivity" | 53 | android:name=".MainActivity" |
54 | android:launchMode="singleTask" | 54 | android:launchMode="singleTask" |
55 | android:screenOrientation="portrait" | 55 | android:screenOrientation="portrait" |
56 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 56 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
57 | <activity | 57 | <activity |
58 | android:name=".RegisterActivity" | 58 | android:name=".RegisterActivity" |
59 | android:screenOrientation="portrait" | 59 | android:screenOrientation="portrait" |
60 | android:theme="@style/ThemeSplash" /> | 60 | android:theme="@style/ThemeSplash" /> |
61 | <activity | 61 | <activity |
62 | android:name=".UserActivity" | 62 | android:name=".UserActivity" |
63 | android:screenOrientation="portrait" | 63 | android:screenOrientation="portrait" |
64 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 64 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
65 | <activity | 65 | <activity |
66 | android:name=".YinsiActivity" | 66 | android:name=".YinsiActivity" |
67 | android:screenOrientation="portrait" | 67 | android:screenOrientation="portrait" |
68 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 68 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
69 | <activity | 69 | <activity |
70 | android:name=".QRActivity" | 70 | android:name=".QRActivity" |
71 | android:screenOrientation="portrait" | 71 | android:screenOrientation="portrait" |
72 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 72 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
73 | <activity | 73 | <activity |
74 | android:name=".AddStudentActivity" | 74 | android:name=".AddStudentActivity" |
75 | android:screenOrientation="portrait" | 75 | android:screenOrientation="portrait" |
76 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 76 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
77 | <activity | 77 | <activity |
78 | android:name=".NickActivity" | 78 | android:name=".NickActivity" |
79 | android:screenOrientation="portrait" | 79 | android:screenOrientation="portrait" |
80 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 80 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
81 | <activity | 81 | <activity |
82 | android:name=".SexActivity" | 82 | android:name=".SexActivity" |
83 | android:screenOrientation="portrait" | 83 | android:screenOrientation="portrait" |
84 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 84 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
85 | <activity | 85 | <activity |
86 | android:name=".NianActivity" | 86 | android:name=".NianActivity" |
87 | android:screenOrientation="portrait" | 87 | android:screenOrientation="portrait" |
88 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 88 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
89 | <activity | 89 | <activity |
90 | android:name=".ShenActivity" | 90 | android:name=".ShenActivity" |
91 | android:screenOrientation="portrait" | 91 | android:screenOrientation="portrait" |
92 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 92 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
93 | <activity | 93 | <activity |
94 | android:name=".UserAgreementActivity" | 94 | android:name=".UserAgreementActivity" |
95 | android:screenOrientation="portrait" | 95 | android:screenOrientation="portrait" |
96 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 96 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
97 | <activity | 97 | <activity |
98 | android:name=".AccountActivity" | 98 | android:name=".AccountActivity" |
99 | android:screenOrientation="portrait" | 99 | android:screenOrientation="portrait" |
100 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 100 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
101 | 101 | ||
102 | <activity | 102 | <activity |
103 | android:name=".ChangePwdActivity" | 103 | android:name=".ChangePwdActivity" |
104 | android:screenOrientation="portrait" | 104 | android:screenOrientation="portrait" |
105 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 105 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
106 | <activity | 106 | <activity |
107 | android:name=".EditStudentActivity" | 107 | android:name=".EditStudentActivity" |
108 | android:screenOrientation="portrait" | 108 | android:screenOrientation="portrait" |
109 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 109 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
110 | <activity | 110 | <activity |
111 | android:name=".ChooseActivity" | 111 | android:name=".ChooseActivity" |
112 | android:screenOrientation="portrait" | 112 | android:screenOrientation="portrait" |
113 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 113 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
114 | <activity | 114 | <activity |
115 | android:name=".AddTeacherActivity" | 115 | android:name=".AddTeacherActivity" |
116 | android:screenOrientation="portrait" | 116 | android:screenOrientation="portrait" |
117 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 117 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
118 | <activity | 118 | <activity |
119 | android:name=".ErrorBookActivity" | 119 | android:name=".ErrorBookActivity" |
120 | android:screenOrientation="portrait" | 120 | android:screenOrientation="portrait" |
121 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 121 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
122 | <activity | 122 | <activity |
123 | android:name=".ImageActivity" | 123 | android:name=".ImageActivity" |
124 | android:screenOrientation="portrait" | 124 | android:screenOrientation="portrait" |
125 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 125 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
126 | <activity | 126 | <activity |
127 | android:name=".ImageEditActivity" | 127 | android:name=".ImageEditActivity" |
128 | android:screenOrientation="portrait" | 128 | android:screenOrientation="portrait" |
129 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 129 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
130 | <activity | 130 | <activity |
131 | android:name=".ImageSelectActivity" | 131 | android:name=".ImageSelectActivity" |
132 | android:screenOrientation="portrait" | 132 | android:screenOrientation="portrait" |
133 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 133 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
134 | <activity | 134 | <activity |
135 | android:name=".AddSuccessActivity" | 135 | android:name=".AddSuccessActivity" |
136 | android:screenOrientation="portrait" | 136 | android:screenOrientation="portrait" |
137 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 137 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
138 | <activity | 138 | <activity |
139 | android:name=".ErrorListActivity" | 139 | android:name=".ErrorListActivity" |
140 | android:screenOrientation="portrait" | 140 | android:screenOrientation="portrait" |
141 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 141 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
142 | <activity | 142 | <activity |
143 | android:name=".ErrorDetailActivity" | 143 | android:name=".ErrorDetailActivity" |
144 | android:screenOrientation="portrait" | 144 | android:screenOrientation="portrait" |
145 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 145 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
146 | <activity | 146 | <activity |
147 | android:name=".TeacherChooseActivity" | 147 | android:name=".TeacherChooseActivity" |
148 | android:screenOrientation="portrait" | 148 | android:screenOrientation="portrait" |
149 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 149 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
150 | <activity | 150 | <activity |
151 | android:name=".TeacherMainActivity" | 151 | android:name=".TeacherMainActivity" |
152 | android:screenOrientation="portrait" | 152 | android:screenOrientation="portrait" |
153 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> | 153 | android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> |
154 | <activity android:name=".StuHomeworkActivity" /> | 154 | <activity android:name=".StuHomeworkActivity" /> |
155 | <activity android:name=".HomeworkDetailActivity" /> | 155 | <activity android:name=".HomeworkDetailActivity" /> |
156 | <activity android:name=".HomeworkSelectActivity" /> | 156 | <activity android:name=".HomeworkSelectActivity" /> |
157 | <activity android:name=".HomeworkFeedbackActivity" /> | ||
157 | 158 | ||
158 | <provider | 159 | <provider |
159 | android:name="androidx.core.content.FileProvider" | 160 | android:name="androidx.core.content.FileProvider" |
160 | android:authorities="com.hjx.parent.fileprovider" | 161 | android:authorities="com.hjx.parent.fileprovider" |
161 | android:exported="false" | 162 | android:exported="false" |
162 | android:grantUriPermissions="true" | 163 | android:grantUriPermissions="true" |
163 | tools:replace="android:authorities"> | 164 | tools:replace="android:authorities"> |
164 | <meta-data | 165 | <meta-data |
165 | android:name="android.support.FILE_PROVIDER_PATHS" | 166 | android:name="android.support.FILE_PROVIDER_PATHS" |
166 | android:resource="@xml/file_provider_paths" | 167 | android:resource="@xml/file_provider_paths" |
167 | tools:replace="android:resource" /> | 168 | tools:replace="android:resource" /> |
168 | </provider> | 169 | </provider> |
169 | </application> | 170 | </application> |
170 | 171 | ||
171 | </manifest> | 172 | </manifest> |
app/src/main/java/com/hjx/parent/HomeworkDetailActivity.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.widget.ImageView; | 6 | import android.widget.ImageView; |
7 | import android.widget.TextView; | 7 | import android.widget.TextView; |
8 | 8 | ||
9 | import androidx.annotation.NonNull; | 9 | import androidx.annotation.NonNull; |
10 | 10 | ||
11 | import com.bumptech.glide.Glide; | 11 | import com.bumptech.glide.Glide; |
12 | import com.chad.library.adapter.base.BaseQuickAdapter; | 12 | import com.chad.library.adapter.base.BaseQuickAdapter; |
13 | import com.chad.library.adapter.base.BaseViewHolder; | 13 | import com.chad.library.adapter.base.BaseViewHolder; |
14 | import com.google.gson.Gson; | ||
15 | import com.hjx.parent.databinding.ActivityHomeworkDetailBinding; | 14 | import com.hjx.parent.databinding.ActivityHomeworkDetailBinding; |
16 | import com.hjx.parent.rx.BaseRxActivity; | 15 | import com.hjx.parent.rx.BaseRxActivity; |
17 | import com.prws.common.bean.ResponseResult; | 16 | import com.prws.common.bean.ResponseResult; |
17 | import com.prws.common.bean.Student; | ||
18 | import com.prws.common.bean.homework.HomeWork; | 18 | import com.prws.common.bean.homework.HomeWork; |
19 | import com.prws.common.bean.homework.HomeworkList; | 19 | import com.prws.common.bean.homework.HomeworkList; |
20 | import com.prws.common.net.NetWorks; | 20 | import com.prws.common.net.NetWorks; |
21 | 21 | ||
22 | import java.util.ArrayList; | 22 | import java.util.ArrayList; |
23 | 23 | ||
24 | public class HomeworkDetailActivity extends BaseRxActivity<ActivityHomeworkDetailBinding> { | 24 | public class HomeworkDetailActivity extends BaseRxActivity<ActivityHomeworkDetailBinding> { |
25 | 25 | ||
26 | private HomeworkList mData; | 26 | private HomeworkList mData; |
27 | private Student student; | ||
27 | 28 | ||
28 | private Adapter mAdapter = new Adapter(); | 29 | private Adapter mAdapter = new Adapter(); |
29 | 30 | ||
30 | @Override | 31 | @Override |
31 | public void initView(Bundle savedInstanceState) { | 32 | public void initView(Bundle savedInstanceState) { |
32 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); | 33 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); |
33 | String json = getIntent().getStringExtra("data"); | 34 | mData = (HomeworkList) getIntent().getSerializableExtra("data"); |
34 | mData = new Gson().fromJson(json, HomeworkList.class); | 35 | student = (Student) getIntent().getSerializableExtra("student"); |
35 | binding.tvTitle.setText(mData.getName()); | 36 | binding.tvTitle.setText(mData.getName()); |
36 | 37 | ||
37 | binding.recyclerView.setAdapter(mAdapter); | 38 | binding.recyclerView.setAdapter(mAdapter); |
38 | getDetail(); | 39 | getDetail(); |
39 | 40 | ||
40 | binding.btnFeedback.setOnClickListener(v -> { | 41 | binding.btnFeedback.setOnClickListener(v -> { |
42 | if (mAdapter.getData().size() == 0) return; | ||
41 | Intent intent = new Intent(this, HomeworkSelectActivity.class); | 43 | Intent intent = new Intent(this, HomeworkSelectActivity.class); |
42 | intent.putExtra("data", mData); | 44 | intent.putExtra("data", mData); |
45 | intent.putExtra("student", student); | ||
43 | intent.putExtra("list", new ArrayList<>(mAdapter.getData())); | 46 | intent.putExtra("list", new ArrayList<>(mAdapter.getData())); |
44 | startActivity(intent); | 47 | startActivity(intent); |
45 | }); | 48 | }); |
46 | } | 49 | } |
47 | 50 | ||
48 | @SuppressLint("CheckResult") | 51 | @SuppressLint("CheckResult") |
49 | private void getDetail() { | 52 | private void getDetail() { |
50 | NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId()) | 53 | NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId()) |
51 | .compose(transformSingle()) | 54 | .compose(transformSingle()) |
52 | .map(ResponseResult::getData) | 55 | .map(ResponseResult::getData) |
53 | .subscribe((list, th) -> { | 56 | .subscribe((list, th) -> { |
54 | if (th != null) th.printStackTrace(); | 57 | if (th != null) th.printStackTrace(); |
55 | mAdapter.setNewData(list); | 58 | mAdapter.setNewData(list); |
56 | }); | 59 | }); |
57 | } | 60 | } |
58 | 61 | ||
59 | @Override | 62 | @Override |
60 | protected ActivityHomeworkDetailBinding getViewBinding() { | 63 | protected ActivityHomeworkDetailBinding getViewBinding() { |
61 | return ActivityHomeworkDetailBinding.inflate(getLayoutInflater()); | 64 | return ActivityHomeworkDetailBinding.inflate(getLayoutInflater()); |
62 | } | 65 | } |
63 | 66 | ||
64 | static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { | 67 | static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { |
65 | 68 | ||
66 | public Adapter() { | 69 | public Adapter() { |
67 | super(R.layout.item_homework_detail); | 70 | super(R.layout.item_homework_detail); |
68 | } | 71 | } |
69 | 72 | ||
70 | @SuppressLint("SetTextI18n") | 73 | @SuppressLint("SetTextI18n") |
71 | @Override | 74 | @Override |
72 | protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { | 75 | protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { |
73 | TextView tvNumber = holder.getView(R.id.tvNumber); | 76 | TextView tvNumber = holder.getView(R.id.tvNumber); |
74 | ImageView imageView = holder.getView(R.id.ivTopic); | 77 | ImageView imageView = holder.getView(R.id.ivTopic); |
75 | int number = getData().indexOf(homeWork) + 1; | 78 | int number = getData().indexOf(homeWork) + 1; |
76 | tvNumber.setText("第" + number + "题"); | 79 | tvNumber.setText("第" + number + "题"); |
77 | Glide.with(mContext).load(homeWork.url).into(imageView); | 80 | Glide.with(mContext).load(homeWork.url).into(imageView); |
78 | } | 81 | } |
79 | } | 82 | } |
80 | } | 83 | } |
app/src/main/java/com/hjx/parent/HomeworkFeedbackActivity.java
File was created | 1 | package com.hjx.parent; | |
2 | |||
3 | import android.os.Bundle; | ||
4 | |||
5 | import com.hjx.parent.databinding.ActivityHomeworkFeedbackBinding; | ||
6 | import com.hjx.parent.rx.BaseRxActivity; | ||
7 | import com.prws.common.bean.Student; | ||
8 | import com.prws.common.bean.homework.HomeWork; | ||
9 | import com.prws.common.bean.homework.HomeworkList; | ||
10 | |||
11 | import java.text.DecimalFormat; | ||
12 | import java.util.ArrayList; | ||
13 | |||
14 | public class HomeworkFeedbackActivity extends BaseRxActivity<ActivityHomeworkFeedbackBinding> { | ||
15 | private Student student; | ||
16 | private HomeworkList mData; | ||
17 | private ArrayList<HomeWork> mList; | ||
18 | |||
19 | @SuppressWarnings("unchecked") | ||
20 | @Override | ||
21 | public void initView(Bundle savedInstanceState) { | ||
22 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); | ||
23 | student = (Student) getIntent().getSerializableExtra("student"); | ||
24 | mData = (HomeworkList) getIntent().getSerializableExtra("data"); | ||
25 | mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list"); | ||
26 | |||
27 | binding.tvStuName.setText(student.stuName); | ||
28 | binding.tvGrade.setText(student.grade); | ||
29 | |||
30 | int correctNo = 0; | ||
31 | for (HomeWork homeWork: mList) { | ||
32 | homeWork.homeworkId = mData.getId(); | ||
33 | if (!homeWork.check) correctNo ++; | ||
34 | } | ||
35 | binding.tvPercent.setText(new DecimalFormat("0%").format(1f * correctNo / mList.size())); | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | protected ActivityHomeworkFeedbackBinding getViewBinding() { | ||
40 | return ActivityHomeworkFeedbackBinding.inflate(getLayoutInflater()); | ||
41 | } | ||
42 | } | ||
43 |
app/src/main/java/com/hjx/parent/HomeworkSelectActivity.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.res.ColorStateList; | 5 | import android.content.res.ColorStateList; |
5 | import android.os.Bundle; | 6 | import android.os.Bundle; |
6 | import android.view.View; | 7 | import android.view.View; |
7 | import android.widget.CheckBox; | 8 | import android.widget.CheckBox; |
8 | import android.widget.ImageView; | 9 | import android.widget.ImageView; |
9 | import android.widget.TextView; | 10 | import android.widget.TextView; |
10 | 11 | ||
11 | import androidx.annotation.NonNull; | 12 | import androidx.annotation.NonNull; |
12 | import androidx.lifecycle.MutableLiveData; | 13 | import androidx.lifecycle.MutableLiveData; |
13 | 14 | ||
14 | import com.bumptech.glide.Glide; | 15 | import com.bumptech.glide.Glide; |
15 | import com.chad.library.adapter.base.BaseQuickAdapter; | 16 | import com.chad.library.adapter.base.BaseQuickAdapter; |
16 | import com.chad.library.adapter.base.BaseViewHolder; | 17 | import com.chad.library.adapter.base.BaseViewHolder; |
17 | import com.hjx.parent.databinding.ActivityHomeworkSelectBinding; | 18 | import com.hjx.parent.databinding.ActivityHomeworkSelectBinding; |
18 | import com.hjx.parent.function.Function1; | 19 | import com.hjx.parent.function.Function1; |
19 | import com.hjx.parent.rx.BaseRxActivity; | 20 | import com.hjx.parent.rx.BaseRxActivity; |
21 | import com.prws.common.bean.Student; | ||
20 | import com.prws.common.bean.homework.HomeWork; | 22 | import com.prws.common.bean.homework.HomeWork; |
21 | import com.prws.common.bean.homework.HomeworkList; | 23 | import com.prws.common.bean.homework.HomeworkList; |
22 | 24 | ||
23 | import java.util.ArrayList; | 25 | import java.util.ArrayList; |
24 | 26 | ||
25 | public class HomeworkSelectActivity extends BaseRxActivity<ActivityHomeworkSelectBinding> { | 27 | public class HomeworkSelectActivity extends BaseRxActivity<ActivityHomeworkSelectBinding> { |
26 | 28 | ||
29 | private Student student; | ||
27 | private HomeworkList mData; | 30 | private HomeworkList mData; |
28 | private ArrayList<HomeWork> mList; | 31 | private ArrayList<HomeWork> mList; |
29 | private Adapter mAdapter = new Adapter(); | 32 | private Adapter mAdapter = new Adapter(); |
30 | 33 | ||
31 | MutableLiveData<Integer> selectNum = new MutableLiveData<>(0); | 34 | MutableLiveData<Integer> selectNum = new MutableLiveData<>(0); |
32 | 35 | ||
33 | @SuppressLint("NotifyDataSetChanged") | 36 | @SuppressLint("NotifyDataSetChanged") |
34 | @SuppressWarnings("unchecked,ConstantConditions") | 37 | @SuppressWarnings("unchecked,ConstantConditions") |
35 | @Override | 38 | @Override |
36 | public void initView(Bundle savedInstanceState) { | 39 | public void initView(Bundle savedInstanceState) { |
37 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); | 40 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); |
41 | student = (Student) getIntent().getSerializableExtra("student"); | ||
38 | mData = (HomeworkList) getIntent().getSerializableExtra("data"); | 42 | mData = (HomeworkList) getIntent().getSerializableExtra("data"); |
39 | mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list"); | 43 | mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list"); |
40 | 44 | ||
41 | mAdapter.setNewData(mList); | 45 | mAdapter.setNewData(mList); |
42 | binding.recyclerView.setAdapter(mAdapter); | 46 | binding.recyclerView.setAdapter(mAdapter); |
43 | 47 | ||
44 | mAdapter.selectCall = i -> selectNum.setValue(selectNum.getValue() + i); | 48 | mAdapter.selectCall = i -> selectNum.setValue(selectNum.getValue() + i); |
45 | selectNum.observe(this, i -> { | 49 | selectNum.observe(this, i -> { |
46 | binding.tvNumber.setText(String.valueOf(i)); | 50 | binding.tvNumber.setText(String.valueOf(i)); |
47 | if (i == 0) { | 51 | if (i == 0) { |
48 | binding.btnConfirm.setText("作业全对"); | 52 | binding.btnConfirm.setText("作业全对"); |
49 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78)); | 53 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78)); |
50 | } else { | 54 | } else { |
51 | binding.btnConfirm.setText("下一步"); | 55 | binding.btnConfirm.setText("下一步"); |
52 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3)); | 56 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3)); |
53 | } | 57 | } |
54 | binding.chkAll.setChecked(i == mList.size() && i != 0); | 58 | binding.chkAll.setChecked(i == mList.size() && i != 0); |
55 | }); | 59 | }); |
56 | 60 | ||
57 | binding.chkAll.setOnClickListener(v -> { | 61 | binding.chkAll.setOnClickListener(v -> { |
58 | if (mList.size() == 0) return; | 62 | if (mList.size() == 0) return; |
59 | boolean b = binding.chkAll.isChecked(); | 63 | boolean b = binding.chkAll.isChecked(); |
60 | for (HomeWork item: mList) { | 64 | for (HomeWork item: mList) { |
61 | item.check = b; | 65 | item.check = b; |
62 | } | 66 | } |
63 | selectNum.setValue(b ? mList.size() : 0); | 67 | selectNum.setValue(b ? mList.size() : 0); |
64 | mAdapter.notifyDataSetChanged(); | 68 | mAdapter.notifyDataSetChanged(); |
65 | }); | 69 | }); |
70 | |||
71 | binding.btnConfirm.setOnClickListener(v -> { | ||
72 | Intent intent = new Intent(this, HomeworkFeedbackActivity.class); | ||
73 | intent.putExtra("data", mData); | ||
74 | intent.putExtra("list", mList); | ||
75 | intent.putExtra("student", student); | ||
76 | startActivity(intent); | ||
77 | }); | ||
66 | } | 78 | } |
67 | 79 | ||
68 | @Override | 80 | @Override |
69 | protected ActivityHomeworkSelectBinding getViewBinding() { | 81 | protected ActivityHomeworkSelectBinding getViewBinding() { |
70 | return ActivityHomeworkSelectBinding.inflate(getLayoutInflater()); | 82 | return ActivityHomeworkSelectBinding.inflate(getLayoutInflater()); |
71 | } | 83 | } |
72 | 84 | ||
73 | 85 | ||
74 | static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { | 86 | static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { |
75 | public Adapter() { | 87 | public Adapter() { |
76 | super(R.layout.item_homework_detail); | 88 | super(R.layout.item_homework_detail); |
77 | } | 89 | } |
78 | public Function1<Integer> selectCall; | 90 | public Function1<Integer> selectCall; |
79 | 91 | ||
80 | @SuppressLint("SetTextI18n") | 92 | @SuppressLint("SetTextI18n") |
81 | @Override | 93 | @Override |
82 | protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { | 94 | protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { |
83 | TextView tvNumber = holder.getView(R.id.tvNumber); | 95 | TextView tvNumber = holder.getView(R.id.tvNumber); |
84 | ImageView imageView = holder.getView(R.id.ivTopic); | 96 | ImageView imageView = holder.getView(R.id.ivTopic); |
85 | int number = getData().indexOf(homeWork) + 1; | 97 | int number = getData().indexOf(homeWork) + 1; |
86 | tvNumber.setText("第" + number + "题"); | 98 | tvNumber.setText("第" + number + "题"); |
87 | Glide.with(mContext).load(homeWork.url).into(imageView); | 99 | Glide.with(mContext).load(homeWork.url).into(imageView); |
88 | 100 | ||
89 | CheckBox checkBox = holder.getView(R.id.checkbox); | 101 | CheckBox checkBox = holder.getView(R.id.checkbox); |
90 | checkBox.setVisibility(View.VISIBLE); | 102 | checkBox.setVisibility(View.VISIBLE); |
91 | checkBox.setOnCheckedChangeListener(null); | 103 | checkBox.setOnCheckedChangeListener(null); |
92 | checkBox.setChecked(homeWork.check); | 104 | checkBox.setChecked(homeWork.check); |
93 | 105 | ||
94 | holder.itemView.setOnClickListener(v -> checkBox.performClick()); | 106 | holder.itemView.setOnClickListener(v -> checkBox.performClick()); |
95 | checkBox.setOnCheckedChangeListener((v, b) -> { | 107 | checkBox.setOnCheckedChangeListener((v, b) -> { |
96 | homeWork.check = b; | 108 | homeWork.check = b; |
97 | if (selectCall != null) { | 109 | if (selectCall != null) { |
98 | selectCall.invoke(b ? 1 : -1); | 110 | selectCall.invoke(b ? 1 : -1); |
99 | } | 111 | } |
100 | }); | 112 | }); |
101 | } | 113 | } |
102 | } | 114 | } |
103 | } | 115 | } |
104 | 116 |
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.os.Bundle; | 5 | import android.os.Bundle; |
5 | import android.widget.LinearLayout; | 6 | import android.widget.LinearLayout; |
6 | import android.widget.PopupWindow; | 7 | import android.widget.PopupWindow; |
7 | 8 | ||
8 | import androidx.lifecycle.MutableLiveData; | 9 | import androidx.lifecycle.MutableLiveData; |
9 | 10 | ||
10 | import com.google.gson.Gson; | 11 | import com.google.gson.Gson; |
11 | import com.hjx.parent.adapter.HomeworkListAdapter; | 12 | import com.hjx.parent.adapter.HomeworkListAdapter; |
12 | import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; | 13 | import com.hjx.parent.databinding.ActivityStudentHomeworkBinding; |
13 | import com.hjx.parent.databinding.PopupFilterFeedbackBinding; | 14 | import com.hjx.parent.databinding.PopupFilterFeedbackBinding; |
14 | import com.hjx.parent.databinding.PopupFilterGradeBinding; | 15 | import com.hjx.parent.databinding.PopupFilterGradeBinding; |
15 | import com.hjx.parent.databinding.PopupFilterSubjectBinding; | 16 | import com.hjx.parent.databinding.PopupFilterSubjectBinding; |
16 | import com.hjx.parent.databinding.PopupFilterTermBinding; | 17 | import com.hjx.parent.databinding.PopupFilterTermBinding; |
17 | import com.hjx.parent.dialog.MsgConfirmDialog; | 18 | import com.hjx.parent.dialog.MsgConfirmDialog; |
18 | import com.hjx.parent.rx.BaseRxActivity; | 19 | import com.hjx.parent.rx.BaseRxActivity; |
19 | import com.prws.common.bean.Student; | 20 | import com.prws.common.bean.Student; |
20 | import com.prws.common.bean.homework.HomeworkList; | 21 | import com.prws.common.bean.homework.HomeworkList; |
21 | import com.prws.common.net.NetWorks; | 22 | import com.prws.common.net.NetWorks; |
22 | import com.prws.common.utils.SharedPreferencesUtil; | 23 | import com.prws.common.utils.SharedPreferencesUtil; |
23 | import com.trello.rxlifecycle2.android.RxLifecycleAndroid; | 24 | import com.trello.rxlifecycle2.android.RxLifecycleAndroid; |
24 | 25 | ||
25 | import java.util.Collections; | 26 | import java.util.Collections; |
26 | 27 | ||
27 | import io.reactivex.Observable; | 28 | import io.reactivex.Observable; |
28 | import io.reactivex.android.schedulers.AndroidSchedulers; | 29 | import io.reactivex.android.schedulers.AndroidSchedulers; |
29 | import io.reactivex.schedulers.Schedulers; | 30 | import io.reactivex.schedulers.Schedulers; |
30 | 31 | ||
31 | public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { | 32 | public class StuHomeworkActivity extends BaseRxActivity<ActivityStudentHomeworkBinding> { |
32 | 33 | ||
33 | private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); | 34 | private final HomeworkListAdapter homeworkAdapter = new HomeworkListAdapter(); |
34 | 35 | ||
35 | PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; | 36 | PopupWindow subjectFilter, gradeFilter, termFilter, feedbackFilter; |
36 | MsgConfirmDialog deleteDialog; | 37 | MsgConfirmDialog deleteDialog; |
37 | State state = new State(); | 38 | State state = new State(); |
38 | 39 | ||
39 | private void handlerIntent() { | 40 | private void handlerIntent() { |
40 | String json = getIntent().getStringExtra("studentJson"); | 41 | String json = getIntent().getStringExtra("studentJson"); |
41 | if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); | 42 | if (json == null) json = (String) SharedPreferencesUtil.getData("student", ""); |
42 | try { state.student = new Gson().fromJson(json, Student.class); } | 43 | try { state.student = new Gson().fromJson(json, Student.class); } |
43 | catch (Throwable t) { t.printStackTrace(); } | 44 | catch (Throwable t) { t.printStackTrace(); } |
44 | } | 45 | } |
45 | 46 | ||
46 | @SuppressLint("SetTextI18n") | 47 | @SuppressLint("SetTextI18n") |
47 | @Override | 48 | @Override |
48 | public void initView(Bundle savedInstanceState) { | 49 | public void initView(Bundle savedInstanceState) { |
49 | handlerIntent(); | 50 | handlerIntent(); |
50 | if (state.student == null) { | 51 | if (state.student == null) { |
51 | finish(); | 52 | finish(); |
52 | return; | 53 | return; |
53 | } | 54 | } |
54 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); | 55 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); |
55 | binding.tvTitle.setText(state.student.stuName + "的全部作业"); | 56 | binding.tvTitle.setText(state.student.stuName + "的全部作业"); |
56 | 57 | ||
57 | binding.recyclerView.setAdapter(homeworkAdapter); | 58 | binding.recyclerView.setAdapter(homeworkAdapter); |
58 | getHomework(); | 59 | getHomework(); |
59 | 60 | ||
60 | binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); | 61 | binding.ftSubject.setOnClickListener(v -> showSubjectFilter()); |
61 | binding.ftGrade.setOnClickListener(v -> showGradeFilter()); | 62 | binding.ftGrade.setOnClickListener(v -> showGradeFilter()); |
62 | binding.ftTerm.setOnClickListener(v -> showTermFilter()); | 63 | binding.ftTerm.setOnClickListener(v -> showTermFilter()); |
63 | binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); | 64 | binding.ftFeedback.setOnClickListener(v -> showFeedbackFilter()); |
64 | homeworkAdapter.deleteCall = data -> { | 65 | homeworkAdapter.deleteCall = data -> { |
65 | if (deleteDialog == null) { | 66 | if (deleteDialog == null) { |
66 | deleteDialog = new MsgConfirmDialog.Builder(this) | 67 | deleteDialog = new MsgConfirmDialog.Builder(this) |
67 | .setMessage("确认要删除吗?一旦删除不可恢复") | 68 | .setMessage("确认要删除吗?一旦删除不可恢复") |
68 | .setPositive("暂不删除") | 69 | .setPositive("暂不删除") |
69 | .setNegative("确定删除") | 70 | .setNegative("确定删除") |
70 | .build(); | 71 | .build(); |
71 | } | 72 | } |
72 | deleteDialog.show(() -> { | 73 | deleteDialog.show(() -> { |
73 | deleteHomework(data); | 74 | deleteHomework(data); |
74 | return true; | 75 | return true; |
75 | }, null); | 76 | }, null); |
76 | }; | 77 | }; |
78 | homeworkAdapter.detailCall = data -> { | ||
79 | Intent intent = new Intent(this, HomeworkDetailActivity.class); | ||
80 | intent.putExtra("data", data); | ||
81 | intent.putExtra("student", state.student); | ||
82 | startActivity(intent); | ||
83 | }; | ||
77 | } | 84 | } |
78 | 85 | ||
79 | @SuppressLint("CheckResult") | 86 | @SuppressLint("CheckResult") |
80 | protected void deleteHomework(HomeworkList data) { | 87 | protected void deleteHomework(HomeworkList data) { |
81 | NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId()) | 88 | NetWorks.service_url.deleteHomework(NetWorks.getHeader(), data.getId()) |
82 | .subscribeOn(Schedulers.io()) | 89 | .subscribeOn(Schedulers.io()) |
83 | .observeOn(AndroidSchedulers.mainThread()) | 90 | .observeOn(AndroidSchedulers.mainThread()) |
84 | .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) | 91 | .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) |
85 | .subscribe((response, th) -> { | 92 | .subscribe((response, th) -> { |
86 | if (th != null) th.printStackTrace(); | 93 | if (th != null) th.printStackTrace(); |
87 | if (response != null && response.getSuccess()) { | 94 | if (response != null && response.getSuccess()) { |
88 | getHomework(); | 95 | getHomework(); |
89 | } | 96 | } |
90 | }); | 97 | }); |
91 | 98 | ||
92 | } | 99 | } |
93 | 100 | ||
94 | @SuppressLint("CheckResult") | 101 | @SuppressLint("CheckResult") |
95 | protected void getHomework() { | 102 | protected void getHomework() { |
96 | NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) | 103 | NetWorks.service_url.getStudentHomework(NetWorks.getHeader(), state.student.stuId) |
97 | .subscribeOn(Schedulers.io()) | 104 | .subscribeOn(Schedulers.io()) |
98 | .observeOn(AndroidSchedulers.mainThread()) | 105 | .observeOn(AndroidSchedulers.mainThread()) |
99 | .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) | 106 | .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle())) |
100 | .toObservable() | 107 | .toObservable() |
101 | .flatMap(response -> Observable.fromIterable(response.getData())) | 108 | .flatMap(response -> Observable.fromIterable(response.getData())) |
102 | // 过滤 | 109 | // 过滤 |
103 | .filter(data -> { // 学科 | 110 | .filter(data -> { // 学科 |
104 | String subject = state.subject.getValue(); | 111 | String subject = state.subject.getValue(); |
105 | if (subject == null || subject.isEmpty()) return true; | 112 | if (subject == null || subject.isEmpty()) return true; |
106 | else return subject.equals(data.getSubject()); | 113 | else return subject.equals(data.getSubject()); |
107 | }) | 114 | }) |
108 | .filter(data -> { // 年级 | 115 | .filter(data -> { // 年级 |
109 | String grade = state.grade.getValue(); | 116 | String grade = state.grade.getValue(); |
110 | if (grade == null || grade.isEmpty()) return true; | 117 | if (grade == null || grade.isEmpty()) return true; |
111 | else return grade.equals(data.getGrade()); | 118 | else return grade.equals(data.getGrade()); |
112 | }) | 119 | }) |
113 | .filter(data -> { // 学期 | 120 | .filter(data -> { // 学期 |
114 | String term = state.term.getValue(); | 121 | String term = state.term.getValue(); |
115 | if (term == null || term.isEmpty()) return true; | 122 | if (term == null || term.isEmpty()) return true; |
116 | else return term.equals(data.getTerm()); | 123 | else return term.equals(data.getTerm()); |
117 | }) | 124 | }) |
118 | .filter(data -> { // 反馈 | 125 | .filter(data -> { // 反馈 |
119 | Integer feedback = state.feedback.getValue(); | 126 | Integer feedback = state.feedback.getValue(); |
120 | if (feedback == null || feedback == 0) return true; | 127 | if (feedback == null || feedback == 0) return true; |
121 | else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); | 128 | else return (feedback == 1 && data.getRight() != null) || (feedback == 2 && data.getRight() == null); |
122 | }) | 129 | }) |
123 | // 过滤完成, 收集 | 130 | // 过滤完成, 收集 |
124 | .toList() | 131 | .toList() |
125 | .subscribe((data, th) -> { | 132 | .subscribe((data, th) -> { |
126 | if (th != null) th.printStackTrace(); | 133 | if (th != null) th.printStackTrace(); |
127 | if (data != null) { | 134 | if (data != null) { |
128 | Collections.sort(data); | 135 | Collections.sort(data); |
129 | } | 136 | } |
130 | homeworkAdapter.setNewData(data); | 137 | homeworkAdapter.setNewData(data); |
131 | }); | 138 | }); |
132 | } | 139 | } |
133 | 140 | ||
134 | private void showSubjectFilter() { | 141 | private void showSubjectFilter() { |
135 | if (subjectFilter == null) { | 142 | if (subjectFilter == null) { |
136 | PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); | 143 | PopupFilterSubjectBinding db = PopupFilterSubjectBinding.inflate(getLayoutInflater()); |
137 | db.setLifecycleOwner(this); | 144 | db.setLifecycleOwner(this); |
138 | db.setState(state); | 145 | db.setState(state); |
139 | db.bg.setOnClickListener(v -> subjectFilter.dismiss()); | 146 | db.bg.setOnClickListener(v -> subjectFilter.dismiss()); |
140 | subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 147 | subjectFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
141 | subjectFilter.setOutsideTouchable(true); | 148 | subjectFilter.setOutsideTouchable(true); |
142 | subjectFilter.setOnDismissListener(this::getHomework); | 149 | subjectFilter.setOnDismissListener(this::getHomework); |
143 | } | 150 | } |
144 | subjectFilter.showAsDropDown(binding.anchorView); | 151 | subjectFilter.showAsDropDown(binding.anchorView); |
145 | } | 152 | } |
146 | 153 | ||
147 | private void showGradeFilter() { | 154 | private void showGradeFilter() { |
148 | if (gradeFilter == null) { | 155 | if (gradeFilter == null) { |
149 | PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); | 156 | PopupFilterGradeBinding db = PopupFilterGradeBinding.inflate(getLayoutInflater()); |
150 | db.setLifecycleOwner(this); | 157 | db.setLifecycleOwner(this); |
151 | db.setState(state); | 158 | db.setState(state); |
152 | db.bg.setOnClickListener(v -> gradeFilter.dismiss()); | 159 | db.bg.setOnClickListener(v -> gradeFilter.dismiss()); |
153 | gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 160 | gradeFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
154 | gradeFilter.setOutsideTouchable(true); | 161 | gradeFilter.setOutsideTouchable(true); |
155 | gradeFilter.setOnDismissListener(this::getHomework); | 162 | gradeFilter.setOnDismissListener(this::getHomework); |
156 | } | 163 | } |
157 | gradeFilter.showAsDropDown(binding.anchorView); | 164 | gradeFilter.showAsDropDown(binding.anchorView); |
158 | } | 165 | } |
159 | 166 | ||
160 | private void showTermFilter() { | 167 | private void showTermFilter() { |
161 | if (termFilter == null) { | 168 | if (termFilter == null) { |
162 | PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); | 169 | PopupFilterTermBinding db = PopupFilterTermBinding.inflate(getLayoutInflater()); |
163 | db.setLifecycleOwner(this); | 170 | db.setLifecycleOwner(this); |
164 | db.setState(state); | 171 | db.setState(state); |
165 | db.bg.setOnClickListener(v -> termFilter.dismiss()); | 172 | db.bg.setOnClickListener(v -> termFilter.dismiss()); |
166 | termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 173 | termFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
167 | termFilter.setOutsideTouchable(true); | 174 | termFilter.setOutsideTouchable(true); |
168 | termFilter.setOnDismissListener(this::getHomework); | 175 | termFilter.setOnDismissListener(this::getHomework); |
169 | } | 176 | } |
170 | termFilter.showAsDropDown(binding.anchorView); | 177 | termFilter.showAsDropDown(binding.anchorView); |
171 | } | 178 | } |
172 | 179 | ||
173 | private void showFeedbackFilter() { | 180 | private void showFeedbackFilter() { |
174 | if (feedbackFilter == null) { | 181 | if (feedbackFilter == null) { |
175 | PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); | 182 | PopupFilterFeedbackBinding db = PopupFilterFeedbackBinding.inflate(getLayoutInflater()); |
176 | db.setLifecycleOwner(this); | 183 | db.setLifecycleOwner(this); |
177 | db.setState(state); | 184 | db.setState(state); |
178 | db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); | 185 | db.bg.setOnClickListener(v -> feedbackFilter.dismiss()); |
179 | feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); | 186 | feedbackFilter = new PopupWindow(db.getRoot(), LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); |
180 | feedbackFilter.setOutsideTouchable(true); | 187 | feedbackFilter.setOutsideTouchable(true); |
181 | feedbackFilter.setOnDismissListener(this::getHomework); | 188 | feedbackFilter.setOnDismissListener(this::getHomework); |
182 | } | 189 | } |
183 | feedbackFilter.showAsDropDown(binding.anchorView); | 190 | feedbackFilter.showAsDropDown(binding.anchorView); |
184 | } | 191 | } |
185 | 192 | ||
186 | @Override | 193 | @Override |
187 | protected ActivityStudentHomeworkBinding getViewBinding() { | 194 | protected ActivityStudentHomeworkBinding getViewBinding() { |
188 | return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); | 195 | return ActivityStudentHomeworkBinding.inflate(getLayoutInflater()); |
189 | } | 196 | } |
190 | 197 | ||
191 | public static class State { | 198 | public static class State { |
192 | public Student student; | 199 | public Student student; |
193 | 200 | ||
194 | public MutableLiveData<String> subject = new MutableLiveData<>(""); | 201 | public MutableLiveData<String> subject = new MutableLiveData<>(""); |
195 | public void setSubject(String value) { | 202 | public void setSubject(String value) { |
196 | subject.setValue(value); | 203 | subject.setValue(value); |
197 | } | 204 | } |
198 | 205 | ||
199 | public MutableLiveData<String> grade = new MutableLiveData<>(""); | 206 | public MutableLiveData<String> grade = new MutableLiveData<>(""); |
200 | public void setGrade(String value) { | 207 | public void setGrade(String value) { |
201 | grade.setValue(value); | 208 | grade.setValue(value); |
202 | } | 209 | } |
203 | 210 | ||
204 | public MutableLiveData<String> term = new MutableLiveData<>(""); | 211 | public MutableLiveData<String> term = new MutableLiveData<>(""); |
205 | public void setTerm(String value) { | 212 | public void setTerm(String value) { |
206 | term.setValue(value); | 213 | term.setValue(value); |
207 | } | 214 | } |
208 | 215 | ||
209 | //0:全部, 1: 已反馈, 2:未反馈 | 216 | //0:全部, 1: 已反馈, 2:未反馈 |
210 | public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); | 217 | public MutableLiveData<Integer> feedback = new MutableLiveData<>(0); |
211 | public void setFeedback(int value) { | 218 | public void setFeedback(int value) { |
212 | feedback.setValue(value); | 219 | feedback.setValue(value); |
213 | } | 220 | } |
214 | } | 221 | } |
215 | } | 222 | } |
216 | 223 |
app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java
1 | package com.hjx.parent.adapter; | 1 | package com.hjx.parent.adapter; |
2 | 2 | ||
3 | import android.content.Intent; | 3 | import android.content.Intent; |
4 | import android.view.View; | 4 | import android.view.View; |
5 | import android.widget.TextView; | 5 | import android.widget.TextView; |
6 | 6 | ||
7 | import androidx.annotation.NonNull; | 7 | import androidx.annotation.NonNull; |
8 | 8 | ||
9 | import com.chad.library.adapter.base.BaseQuickAdapter; | 9 | import com.chad.library.adapter.base.BaseQuickAdapter; |
10 | import com.chad.library.adapter.base.BaseViewHolder; | 10 | import com.chad.library.adapter.base.BaseViewHolder; |
11 | import com.google.gson.Gson; | 11 | import com.google.gson.Gson; |
12 | import com.hjx.parent.HomeworkDetailActivity; | 12 | import com.hjx.parent.HomeworkDetailActivity; |
13 | import com.hjx.parent.R; | 13 | import com.hjx.parent.R; |
14 | import com.hjx.parent.function.Function0; | 14 | import com.hjx.parent.function.Function0; |
15 | import com.hjx.parent.function.Function1; | 15 | import com.hjx.parent.function.Function1; |
16 | import com.prws.common.bean.homework.HomeworkList; | 16 | import com.prws.common.bean.homework.HomeworkList; |
17 | 17 | ||
18 | public class HomeworkListAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> { | 18 | public class HomeworkListAdapter extends BaseQuickAdapter<HomeworkList, BaseViewHolder> { |
19 | 19 | ||
20 | public Function1<HomeworkList> deleteCall; | 20 | public Function1<HomeworkList> deleteCall; |
21 | public Function1<HomeworkList> detailCall; | ||
21 | 22 | ||
22 | public HomeworkListAdapter() { | 23 | public HomeworkListAdapter() { |
23 | super(R.layout.item_homework_list); | 24 | super(R.layout.item_homework_list); |
24 | } | 25 | } |
25 | 26 | ||
26 | @Override | 27 | @Override |
27 | protected void convert(@NonNull BaseViewHolder helper, HomeworkList homework) { | 28 | protected void convert(@NonNull BaseViewHolder helper, HomeworkList homework) { |
28 | helper.setGone(R.id.tvFlag, homework.getRight() != null); | 29 | helper.setGone(R.id.tvFlag, homework.getRight() != null); |
29 | helper.setText(R.id.tvName, homework.getName()); | 30 | helper.setText(R.id.tvName, homework.getName()); |
30 | helper.setText(R.id.tvGrade, homework.getGrade() + "-" + homework.getTerm()); | 31 | helper.setText(R.id.tvGrade, homework.getGrade() + "-" + homework.getTerm()); |
31 | int subjectImg; | 32 | int subjectImg; |
32 | switch (homework.getSubject()) { | 33 | switch (homework.getSubject()) { |
33 | case "语文": | 34 | case "语文": |
34 | subjectImg = R.drawable.ic_chinese; | 35 | subjectImg = R.drawable.ic_chinese; |
35 | break; | 36 | break; |
36 | case "英语": | 37 | case "英语": |
37 | subjectImg = R.drawable.ic_english; | 38 | subjectImg = R.drawable.ic_english; |
38 | break; | 39 | break; |
39 | case "物理": | 40 | case "物理": |
40 | subjectImg = R.drawable.ic_physics; | 41 | subjectImg = R.drawable.ic_physics; |
41 | break; | 42 | break; |
42 | case "化学": | 43 | case "化学": |
43 | subjectImg = R.drawable.ic_chemistry; | 44 | subjectImg = R.drawable.ic_chemistry; |
44 | break; | 45 | break; |
45 | case "数学": | 46 | case "数学": |
46 | default: | 47 | default: |
47 | subjectImg = R.drawable.ic_math; | 48 | subjectImg = R.drawable.ic_math; |
48 | } | 49 | } |
49 | helper.setImageResource(R.id.ivSubject, subjectImg); | 50 | helper.setImageResource(R.id.ivSubject, subjectImg); |
50 | 51 | ||
51 | TextView tvDate = helper.getView(R.id.tvDate); | 52 | TextView tvDate = helper.getView(R.id.tvDate); |
52 | int index = getData().indexOf(homework); | 53 | int index = getData().indexOf(homework); |
53 | if (index == 0) { | 54 | if (index == 0) { |
54 | tvDate.setVisibility(View.VISIBLE); | 55 | tvDate.setVisibility(View.VISIBLE); |
55 | } else if (!homework.getFormatTime().equals(getData().get(index - 1).getFormatTime())) { | 56 | } else if (!homework.getFormatTime().equals(getData().get(index - 1).getFormatTime())) { |
56 | tvDate.setVisibility(View.VISIBLE); | 57 | tvDate.setVisibility(View.VISIBLE); |
57 | } else { | 58 | } else { |
58 | tvDate.setVisibility(View.GONE); | 59 | tvDate.setVisibility(View.GONE); |
59 | } | 60 | } |
60 | tvDate.setText(homework.getFormatTime()); | 61 | tvDate.setText(homework.getFormatTime()); |
61 | 62 | ||
62 | View btnDelete = helper.getView(R.id.btnDelete); | 63 | View btnDelete = helper.getView(R.id.btnDelete); |
63 | btnDelete.setOnClickListener(v -> { | 64 | btnDelete.setOnClickListener(v -> { |
64 | if (deleteCall != null) deleteCall.invoke(homework); | 65 | if (deleteCall != null) deleteCall.invoke(homework); |
65 | }); | 66 | }); |
66 | 67 | ||
67 | View btnDetail = helper.getView(R.id.btnDetail); | 68 | View btnDetail = helper.getView(R.id.btnDetail); |
68 | btnDetail.setOnClickListener(v -> { | 69 | btnDetail.setOnClickListener(v -> { |
69 | Intent intent = new Intent(mContext, HomeworkDetailActivity.class); | 70 | if (detailCall != null) { |
70 | intent.putExtra("data", new Gson().toJson(homework)); | 71 | detailCall.invoke(homework); |
71 | mContext.startActivity(intent); | 72 | } |
72 | }); | 73 | }); |
73 | } | 74 | } |
74 | } | 75 | } |
75 | 76 |
app/src/main/res/drawable/svg_ic_comment.xml
1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" | 1 | <vector xmlns:android="http://schemas.android.com/apk/res/android" |
2 | android:width="34dp" | 2 | android:width="17dp" |
3 | android:height="34dp" | 3 | android:height="17dp" |
4 | android:viewportWidth="34" | 4 | android:viewportWidth="34" |
5 | android:viewportHeight="34"> | 5 | android:viewportHeight="34"> |
6 | <path | 6 | <path |
7 | android:pathData="M14,0L28,0C31.314,0 34,2.686 34,6L34,28C34,31.314 31.314,34 28,34L6,34C2.686,34 0,31.314 0,28L0,14C0,6.268 6.268,0 14,0Z" | 7 | android:pathData="M14,0L28,0C31.314,0 34,2.686 34,6L34,28C34,31.314 31.314,34 28,34L6,34C2.686,34 0,31.314 0,28L0,14C0,6.268 6.268,0 14,0Z" |
8 | android:fillColor="#F9C027" | 8 | android:fillColor="#F9C027" |
9 | android:fillType="evenOdd"/> | 9 | android:fillType="evenOdd"/> |
10 | <path | 10 | <path |
11 | android:pathData="M27.283,10.431C26.963,10.859 19.398,17.174 18.86,17.585C18.536,17.833 17.814,18.812 17.577,19.166C16.713,20.453 16.323,19.485 15.931,19.108C15.539,18.732 14.189,18.529 15.592,17.505C15.858,17.311 16.906,16.658 17.24,16.314C17.684,15.855 24.631,8.045 25.045,7.672C26.128,6.697 27.27,6.973 27.716,7.279C28.135,7.566 28.185,9.224 27.283,10.431ZM13.911,25.89C11.844,27.908 6.527,26.848 6.078,25.252C5.547,23.37 8.256,24.627 9.206,21.756C10.381,18.21 13.374,18.401 14.921,19.934C16.467,21.466 15.952,23.897 13.911,25.89Z" | 11 | android:pathData="M27.283,10.431C26.963,10.859 19.398,17.174 18.86,17.585C18.536,17.833 17.814,18.812 17.577,19.166C16.713,20.453 16.323,19.485 15.931,19.108C15.539,18.732 14.189,18.529 15.592,17.505C15.858,17.311 16.906,16.658 17.24,16.314C17.684,15.855 24.631,8.045 25.045,7.672C26.128,6.697 27.27,6.973 27.716,7.279C28.135,7.566 28.185,9.224 27.283,10.431ZM13.911,25.89C11.844,27.908 6.527,26.848 6.078,25.252C5.547,23.37 8.256,24.627 9.206,21.756C10.381,18.21 13.374,18.401 14.921,19.934C16.467,21.466 15.952,23.897 13.911,25.89Z" |
12 | android:fillColor="#FFFFFF" | 12 | android:fillColor="#FFFFFF" |
13 | android:fillType="evenOdd"/> | 13 | android:fillType="evenOdd"/> |
14 | </vector> | 14 | </vector> |
15 | 15 |
app/src/main/res/layout/activity_homework_feedback.xml
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <LinearLayout | 2 | <LinearLayout |
3 | xmlns:android="http://schemas.android.com/apk/res/android" | 3 | xmlns:android="http://schemas.android.com/apk/res/android" |
4 | xmlns:app="http://schemas.android.com/apk/res-auto" | 4 | xmlns:app="http://schemas.android.com/apk/res-auto" |
5 | xmlns:tools="http://schemas.android.com/tools" | 5 | xmlns:tools="http://schemas.android.com/tools" |
6 | android:orientation="vertical" | 6 | android:orientation="vertical" |
7 | android:layout_width="match_parent" | 7 | android:layout_width="match_parent" |
8 | android:layout_height="match_parent" | 8 | android:layout_height="match_parent" |
9 | tools:ignore="UseCompoundDrawables,HardcodedText,SmallSp,ContentDescription"> | 9 | tools:ignore="UseCompoundDrawables,HardcodedText,SmallSp,ContentDescription"> |
10 | 10 | ||
11 | <androidx.appcompat.widget.Toolbar | 11 | <androidx.appcompat.widget.Toolbar |
12 | android:id="@+id/toolbar" | 12 | android:id="@+id/toolbar" |
13 | app:navigationIcon="@drawable/svg_back" | 13 | app:navigationIcon="@drawable/svg_back" |
14 | app:contentInsetStartWithNavigation="14dp" | 14 | app:contentInsetStartWithNavigation="14dp" |
15 | android:paddingStart="-8dp" | 15 | android:paddingStart="-8dp" |
16 | android:paddingEnd="-8dp" | 16 | android:paddingEnd="-8dp" |
17 | android:background="@color/white" | 17 | android:background="@color/white" |
18 | android:layout_width="match_parent" | 18 | android:layout_width="match_parent" |
19 | android:layout_height="40dp"> | 19 | android:layout_height="40dp"> |
20 | <TextView | 20 | <TextView |
21 | android:text="第二步:教师评语" | 21 | android:text="第二步:教师评语" |
22 | android:textSize="18sp" | 22 | android:textSize="18sp" |
23 | android:textColor="#333" | 23 | android:textColor="#333" |
24 | android:textStyle="bold" | 24 | android:textStyle="bold" |
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 | <TextView | 28 | <TextView |
29 | android:id="@+id/btnPublish" | 29 | android:id="@+id/btnPublish" |
30 | android:text="发布" | 30 | android:text="发布" |
31 | android:textSize="13sp" | 31 | android:textSize="13sp" |
32 | android:textColor="#1C90F3" | 32 | android:textColor="#1C90F3" |
33 | android:textStyle="bold" | 33 | android:textStyle="bold" |
34 | android:layout_gravity="end|center_vertical" | 34 | android:layout_gravity="end|center_vertical" |
35 | android:layout_marginEnd="24dp" | 35 | android:layout_marginEnd="24dp" |
36 | android:layout_width="wrap_content" | 36 | android:layout_width="wrap_content" |
37 | android:layout_height="wrap_content"/> | 37 | android:layout_height="wrap_content"/> |
38 | </androidx.appcompat.widget.Toolbar> | 38 | </androidx.appcompat.widget.Toolbar> |
39 | 39 | ||
40 | <androidx.core.widget.NestedScrollView | 40 | <androidx.core.widget.NestedScrollView |
41 | android:layout_width="match_parent" | 41 | android:layout_width="match_parent" |
42 | android:layout_height="match_parent"> | 42 | android:layout_height="match_parent"> |
43 | <LinearLayout | 43 | <LinearLayout |
44 | android:orientation="vertical" | 44 | android:orientation="vertical" |
45 | android:paddingHorizontal="15dp" | 45 | android:paddingHorizontal="15dp" |
46 | android:paddingBottom="20dp" | 46 | android:paddingBottom="20dp" |
47 | android:layout_width="match_parent" | 47 | android:layout_width="match_parent" |
48 | android:layout_height="wrap_content"> | 48 | android:layout_height="wrap_content"> |
49 | 49 | ||
50 | <LinearLayout | 50 | <LinearLayout |
51 | android:orientation="vertical" | 51 | android:orientation="vertical" |
52 | android:background="@drawable/shape_radius_10" | 52 | android:background="@drawable/shape_radius_10" |
53 | android:backgroundTint="@color/white" | 53 | android:backgroundTint="@color/white" |
54 | android:layout_marginTop="15dp" | 54 | android:layout_marginTop="15dp" |
55 | android:layout_width="match_parent" | 55 | android:layout_width="match_parent" |
56 | android:layout_height="wrap_content"> | 56 | android:layout_height="wrap_content"> |
57 | <androidx.appcompat.widget.AppCompatTextView | 57 | <androidx.appcompat.widget.AppCompatTextView |
58 | android:text="学生信息" | 58 | android:text="学生信息" |
59 | android:textSize="16sp" | 59 | android:textSize="16sp" |
60 | android:textColor="#333" | 60 | android:textColor="#333" |
61 | android:textStyle="bold" | 61 | android:textStyle="bold" |
62 | android:gravity="center_vertical" | 62 | android:gravity="center_vertical" |
63 | android:paddingHorizontal="15dp" | 63 | android:paddingHorizontal="15dp" |
64 | android:drawablePadding="5dp" | 64 | android:drawablePadding="5dp" |
65 | android:drawableStart="@drawable/svg_ic_stu_info" | 65 | android:drawableStart="@drawable/svg_ic_stu_info" |
66 | android:background="@drawable/shape_radius_top_10" | 66 | android:background="@drawable/shape_radius_top_10" |
67 | android:backgroundTint="#DAEBFE" | 67 | android:backgroundTint="#DAEBFE" |
68 | android:layout_width="match_parent" | 68 | android:layout_width="match_parent" |
69 | android:layout_height="40dp"/> | 69 | android:layout_height="40dp"/> |
70 | <LinearLayout | 70 | <LinearLayout |
71 | android:orientation="horizontal" | 71 | android:orientation="horizontal" |
72 | android:layout_marginHorizontal="15dp" | 72 | android:layout_marginHorizontal="15dp" |
73 | android:layout_marginVertical="18dp" | 73 | android:layout_marginVertical="18dp" |
74 | android:layout_width="match_parent" | 74 | android:layout_width="match_parent" |
75 | android:layout_height="wrap_content"> | 75 | android:layout_height="wrap_content"> |
76 | <TextView | 76 | <TextView |
77 | android:text="学生姓名:" | 77 | android:text="学生姓名:" |
78 | android:textSize="14sp" | 78 | android:textSize="14sp" |
79 | android:textColor="#333" | 79 | android:textColor="#333" |
80 | android:layout_width="wrap_content" | 80 | android:layout_width="wrap_content" |
81 | android:layout_height="wrap_content"/> | 81 | android:layout_height="wrap_content"/> |
82 | <TextView | 82 | <TextView |
83 | android:text="杨小凯" | 83 | android:id="@+id/tvStuName" |
84 | tools:text="杨小凯" | ||
84 | android:textSize="14sp" | 85 | android:textSize="14sp" |
85 | android:textColor="#333" | 86 | android:textColor="#333" |
86 | android:layout_width="wrap_content" | 87 | android:layout_width="wrap_content" |
87 | android:layout_height="wrap_content"/> | 88 | android:layout_height="wrap_content"/> |
88 | <Space style="@style/empty_space"/> | 89 | <Space style="@style/empty_space"/> |
89 | <TextView | 90 | <TextView |
90 | android:text="年级:" | 91 | android:text="年级:" |
91 | android:textSize="14sp" | 92 | android:textSize="14sp" |
92 | android:textColor="#333" | 93 | android:textColor="#333" |
93 | android:layout_width="wrap_content" | 94 | android:layout_width="wrap_content" |
94 | android:layout_height="wrap_content"/> | 95 | android:layout_height="wrap_content"/> |
95 | <TextView | 96 | <TextView |
96 | android:text="六年级" | 97 | android:id="@+id/tvGrade" |
98 | tools:text="六年级" | ||
97 | android:textSize="14sp" | 99 | android:textSize="14sp" |
98 | android:textColor="#333" | 100 | android:textColor="#333" |
99 | android:layout_width="96dp" | 101 | android:layout_width="96dp" |
100 | android:layout_height="wrap_content"/> | 102 | android:layout_height="wrap_content"/> |
101 | </LinearLayout> | 103 | </LinearLayout> |
102 | </LinearLayout> | 104 | </LinearLayout> |
103 | 105 | ||
104 | <LinearLayout | 106 | <LinearLayout |
105 | android:orientation="vertical" | 107 | android:orientation="vertical" |
106 | android:background="@drawable/shape_radius_10" | 108 | android:background="@drawable/shape_radius_10" |
107 | android:backgroundTint="@color/white" | 109 | android:backgroundTint="@color/white" |
108 | android:paddingBottom="15dp" | 110 | android:paddingBottom="15dp" |
109 | android:layout_marginTop="15dp" | 111 | android:layout_marginTop="15dp" |
110 | android:layout_width="match_parent" | 112 | android:layout_width="match_parent" |
111 | android:layout_height="wrap_content"> | 113 | android:layout_height="wrap_content"> |
112 | <androidx.appcompat.widget.AppCompatTextView | 114 | <androidx.appcompat.widget.AppCompatTextView |
113 | android:text="作业详情" | 115 | android:text="作业详情" |
114 | android:textSize="16sp" | 116 | android:textSize="16sp" |
115 | android:textColor="#333" | 117 | android:textColor="#333" |
116 | android:textStyle="bold" | 118 | android:textStyle="bold" |
117 | android:gravity="center_vertical" | 119 | android:gravity="center_vertical" |
118 | android:paddingHorizontal="15dp" | 120 | android:paddingHorizontal="15dp" |
119 | android:drawablePadding="5dp" | 121 | android:drawablePadding="5dp" |
120 | android:drawableStart="@drawable/svg_ic_correct" | 122 | android:drawableStart="@drawable/svg_ic_correct" |
121 | android:background="@drawable/shape_radius_top_10" | 123 | android:background="@drawable/shape_radius_top_10" |
122 | android:backgroundTint="#DAEBFE" | 124 | android:backgroundTint="#DAEBFE" |
123 | android:layout_width="match_parent" | 125 | android:layout_width="match_parent" |
124 | android:layout_height="40dp"/> | 126 | android:layout_height="40dp"/> |
125 | <LinearLayout | 127 | <LinearLayout |
126 | android:orientation="horizontal" | 128 | android:orientation="horizontal" |
127 | android:layout_marginHorizontal="15dp" | 129 | android:layout_marginHorizontal="15dp" |
128 | android:layout_marginTop="15dp" | 130 | android:layout_marginTop="15dp" |
129 | android:layout_width="match_parent" | 131 | android:layout_width="match_parent" |
130 | android:layout_height="wrap_content"> | 132 | android:layout_height="wrap_content"> |
131 | <TextView | 133 | <TextView |
132 | android:text="学生姓名:" | 134 | android:text="正确率:" |
133 | android:textSize="14sp" | 135 | android:textSize="14sp" |
134 | android:textColor="#333" | 136 | android:textColor="#333" |
135 | android:layout_width="wrap_content" | 137 | android:layout_width="wrap_content" |
136 | android:layout_height="wrap_content"/> | 138 | android:layout_height="wrap_content"/> |
137 | <TextView | 139 | <TextView |
140 | android:id="@+id/tvPercent" | ||
138 | tools:text="60%" | 141 | tools:text="60%" |
139 | android:textSize="14sp" | 142 | android:textSize="14sp" |
140 | android:textColor="#333" | 143 | android:textColor="#333" |
141 | android:layout_width="wrap_content" | 144 | android:layout_width="wrap_content" |
142 | android:layout_height="wrap_content"/> | 145 | android:layout_height="wrap_content"/> |
143 | <Space style="@style/empty_space"/> | 146 | <Space style="@style/empty_space"/> |
144 | <TextView | 147 | <TextView |
145 | android:text="答题结果" | 148 | android:text="答题结果" |
146 | android:textSize="14sp" | 149 | android:textSize="14sp" |
147 | android:textColor="#333" | 150 | android:textColor="#333" |
148 | android:layout_width="wrap_content" | 151 | android:layout_width="wrap_content" |
149 | android:layout_height="wrap_content"/> | 152 | android:layout_height="wrap_content"/> |
150 | <TextView | 153 | <TextView |
151 | android:text="(点击查看题目详情)" | 154 | android:text="(点击查看题目详情)" |
152 | android:textSize="14sp" | 155 | android:textSize="14sp" |
153 | android:textColor="#1C90F3" | 156 | android:textColor="#1C90F3" |
154 | android:layout_width="wrap_content" | 157 | android:layout_width="wrap_content" |
155 | android:layout_height="wrap_content"/> | 158 | android:layout_height="wrap_content"/> |
156 | </LinearLayout> | 159 | </LinearLayout> |
157 | 160 | ||
158 | <androidx.recyclerview.widget.RecyclerView | 161 | <androidx.recyclerview.widget.RecyclerView |
159 | android:id="@+id/rvCorrect" | 162 | android:id="@+id/rvCorrect" |
160 | tools:itemCount="1" | 163 | tools:itemCount="1" |
161 | android:layout_marginTop="15dp" | 164 | android:layout_marginTop="15dp" |
162 | android:layout_marginHorizontal="15dp" | 165 | android:layout_marginHorizontal="15dp" |
163 | android:layout_width="match_parent" | 166 | android:layout_width="match_parent" |
164 | android:layout_height="wrap_content"/> | 167 | android:layout_height="wrap_content"/> |
165 | <TextView | 168 | <TextView |
166 | android:text="错题已经加入到错题本,到错题本查看详情" | 169 | android:text="错题已经加入到错题本,到错题本查看详情" |
167 | android:textSize="12sp" | 170 | android:textSize="12sp" |
168 | android:textColor="#666" | 171 | android:textColor="#666" |
169 | android:layout_marginTop="15dp" | 172 | android:layout_marginTop="15dp" |
170 | android:layout_marginHorizontal="15dp" | 173 | android:layout_marginHorizontal="15dp" |
171 | android:layout_width="wrap_content" | 174 | android:layout_width="wrap_content" |
172 | android:layout_height="wrap_content"/> | 175 | android:layout_height="wrap_content"/> |
173 | </LinearLayout> | 176 | </LinearLayout> |
174 | 177 | ||
175 | <LinearLayout | 178 | <LinearLayout |
176 | android:orientation="vertical" | 179 | android:orientation="vertical" |
177 | android:background="@drawable/shape_radius_10" | 180 | android:background="@drawable/shape_radius_10" |
178 | android:backgroundTint="@color/white" | 181 | android:backgroundTint="@color/white" |
179 | android:layout_marginTop="15dp" | 182 | android:layout_marginTop="15dp" |
180 | android:layout_width="match_parent" | 183 | android:layout_width="match_parent" |
181 | android:layout_height="wrap_content"> | 184 | android:layout_height="wrap_content"> |
182 | <androidx.appcompat.widget.AppCompatTextView | 185 | <androidx.appcompat.widget.AppCompatTextView |
183 | android:text="作业详情" | 186 | android:text="作业详情" |
184 | android:textSize="16sp" | 187 | android:textSize="16sp" |
185 | android:textColor="#333" | 188 | android:textColor="#333" |
186 | android:textStyle="bold" | 189 | android:textStyle="bold" |
187 | android:gravity="center_vertical" | 190 | android:gravity="center_vertical" |
188 | android:paddingHorizontal="15dp" | 191 | android:paddingHorizontal="15dp" |
189 | android:drawablePadding="5dp" | 192 | android:drawablePadding="5dp" |
190 | android:drawableStart="@drawable/svg_ic_paper" | 193 | android:drawableStart="@drawable/svg_ic_paper" |
191 | android:background="@drawable/shape_radius_top_10" | 194 | android:background="@drawable/shape_radius_top_10" |
192 | android:backgroundTint="#DAEBFE" | 195 | android:backgroundTint="#DAEBFE" |
193 | android:layout_width="match_parent" | 196 | android:layout_width="match_parent" |
194 | android:layout_height="40dp"/> | 197 | android:layout_height="40dp"/> |
195 | <androidx.recyclerview.widget.RecyclerView | 198 | <androidx.recyclerview.widget.RecyclerView |
196 | android:id="@+id/rvError" | 199 | android:id="@+id/rvError" |
197 | android:orientation="vertical" | 200 | android:orientation="vertical" |
198 | app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" | 201 | app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" |
199 | android:layout_width="match_parent" | 202 | android:layout_width="match_parent" |
200 | android:layout_height="wrap_content"/> | 203 | android:layout_height="wrap_content"/> |
201 | </LinearLayout> | 204 | </LinearLayout> |
202 | 205 | ||
203 | <LinearLayout | 206 | <LinearLayout |
204 | android:orientation="vertical" | 207 | android:orientation="vertical" |
205 | android:background="@drawable/shape_radius_10" | 208 | android:background="@drawable/shape_radius_10" |
206 | android:backgroundTint="@color/white" | 209 | android:backgroundTint="@color/white" |
207 | android:layout_marginTop="15dp" | 210 | android:layout_marginTop="15dp" |
208 | android:layout_width="match_parent" | 211 | android:layout_width="match_parent" |
209 | android:layout_height="wrap_content"> | 212 | android:layout_height="wrap_content"> |
210 | <androidx.appcompat.widget.AppCompatTextView | 213 | <androidx.appcompat.widget.AppCompatTextView |
211 | android:text="教师评语" | 214 | android:text="教师评语" |
212 | android:textSize="16sp" | 215 | android:textSize="16sp" |
213 | android:textColor="#333" | 216 | android:textColor="#333" |
214 | android:textStyle="bold" | 217 | android:textStyle="bold" |
215 | android:gravity="center_vertical" | 218 | android:gravity="center_vertical" |
216 | android:paddingHorizontal="15dp" | 219 | android:paddingHorizontal="15dp" |
217 | android:drawablePadding="5dp" | 220 | android:drawablePadding="5dp" |
218 | android:drawableStart="@drawable/svg_ic_paper" | 221 | android:drawableStart="@drawable/svg_ic_comment" |
219 | android:background="@drawable/shape_radius_top_10" | 222 | android:background="@drawable/shape_radius_top_10" |
220 | android:backgroundTint="#DAEBFE" | 223 | android:backgroundTint="#DAEBFE" |
221 | android:layout_width="match_parent" | 224 | android:layout_width="match_parent" |
222 | android:layout_height="40dp"/> | 225 | android:layout_height="40dp"/> |
223 | <EditText | 226 | <EditText |
224 | android:id="@+id/etComment" | 227 | android:id="@+id/etComment" |
225 | android:hint="非必填" | 228 | android:hint="非必填" |
226 | android:textSize="13sp" | 229 | android:textSize="13sp" |
227 | android:textColor="#333" | 230 | android:textColor="#333" |
228 | android:textColorHint="#999" | 231 | android:textColorHint="#999" |
229 | android:gravity="start" | 232 | android:gravity="start" |
230 | android:background="@null" | 233 | android:background="@null" |
231 | android:layout_margin="14dp" | 234 | android:layout_margin="14dp" |
232 | android:layout_width="match_parent" | 235 | android:layout_width="match_parent" |
233 | android:layout_height="wrap_content" | 236 | android:layout_height="wrap_content" |
234 | tools:ignore="Autofill,LabelFor,TextFields" /> | 237 | tools:ignore="Autofill,LabelFor,TextFields" /> |
235 | </LinearLayout> | 238 | </LinearLayout> |
236 | 239 | ||
237 | 240 | ||
238 | </LinearLayout> | 241 | </LinearLayout> |
239 | </androidx.core.widget.NestedScrollView> | 242 | </androidx.core.widget.NestedScrollView> |
240 | </LinearLayout> | 243 | </LinearLayout> |
libs/common/src/main/java/com/prws/common/bean/Student.java
1 | package com.prws.common.bean; | 1 | package com.prws.common.bean; |
2 | 2 | ||
3 | import androidx.annotation.NonNull; | 3 | import androidx.annotation.NonNull; |
4 | 4 | ||
5 | public class Student { | 5 | import java.io.Serializable; |
6 | |||
7 | public class Student implements Serializable { | ||
6 | 8 | ||
7 | public String stuId; | 9 | public String stuId; |
8 | public String stuName; | 10 | public String stuName; |
9 | public int gender; | 11 | public int gender; |
10 | public String term; | 12 | public String term; |
11 | public String account; | 13 | public String account; |
12 | public String nickName; | 14 | public String nickName; |
13 | public String address; | 15 | public String address; |
14 | public String phone; | 16 | public String phone; |
15 | public String photo; | 17 | public String photo; |
16 | public int fromType; | 18 | public int fromType; |
17 | public int gradeId; | 19 | public int gradeId; |
18 | public String oriSchool; | 20 | public String oriSchool; |
19 | public String parentPhone; | 21 | public String parentPhone; |
20 | public String parentIdentity; | 22 | public String parentIdentity; |
21 | public String teacherName; | 23 | public String teacherName; |
22 | public int teacherId; | 24 | public int teacherId; |
23 | public String teacherAvatar; | 25 | public String teacherAvatar; |
24 | public String grade; | 26 | public String grade; |
25 | public String teacherIdentity; | 27 | public String teacherIdentity; |
26 | public int sex; | 28 | public int sex; |
27 | public Integer state; | 29 | public Integer state; |
28 | 30 | ||
29 | @NonNull | 31 | @NonNull |
30 | @Override | 32 | @Override |
31 | public String toString() { | 33 | public String toString() { |
32 | return stuName; | 34 | return stuName; |
33 | } | 35 | } |
34 | } | 36 | } |
35 | 37 |
libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.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.io.Serializable; | 5 | import java.io.Serializable; |
6 | 6 | ||
7 | public class HomeWork implements Serializable { | 7 | public class HomeWork implements Serializable { |
8 | 8 | ||
9 | @SerializedName(value = "homeworkId", alternate = "id") | 9 | @SerializedName(value = "homeworkId", alternate = "id") |
10 | public Integer homeworkId; | 10 | public String homeworkId; |
11 | public String brief; | 11 | public String brief; |
12 | public String url; | 12 | public String url; |
13 | public String analyseUrl; | 13 | public String analyseUrl; |
14 | public String analyseVideoUrl; | 14 | public String analyseVideoUrl; |
15 | public Integer correction; | 15 | public Integer correction; |
16 | public String answer; | 16 | public String answer; |
17 | public String points; | 17 | public String points; |
18 | 18 | ||
19 | public boolean check = false; | 19 | public boolean check = false; |
20 | 20 | ||
21 | } | 21 | } |
22 | 22 |