diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2b91457..b7283b9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -152,6 +152,8 @@
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
+
+
{
+
+ private HomeworkList mData;
+
+ private Adapter mAdapter = new Adapter();
+
+ @Override
+ public void initView(Bundle savedInstanceState) {
+ binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
+ String json = getIntent().getStringExtra("data");
+ mData = new Gson().fromJson(json, HomeworkList.class);
+ binding.tvTitle.setText(mData.getName());
+
+ binding.recyclerView.setAdapter(mAdapter);
+ getDetail();
+
+ binding.btnFeedback.setOnClickListener(v -> {
+ Intent intent = new Intent(this, HomeworkSelectActivity.class);
+ intent.putExtra("data", mData);
+ intent.putExtra("list", new ArrayList<>(mAdapter.getData()));
+ startActivity(intent);
+ });
+ }
+
+ @SuppressLint("CheckResult")
+ private void getDetail() {
+ NetWorks.service_url.getHomeworkDetail(NetWorks.getHeader(), mData.getId())
+ .compose(transformSingle())
+ .map(ResponseResult::getData)
+ .subscribe((list, th) -> {
+ if (th != null) th.printStackTrace();
+ mAdapter.setNewData(list);
+ });
+ }
+
+ @Override
+ protected ActivityHomeworkDetailBinding getViewBinding() {
+ return ActivityHomeworkDetailBinding.inflate(getLayoutInflater());
+ }
+
+ static class Adapter extends BaseQuickAdapter {
+
+ public Adapter() {
+ super(R.layout.item_homework_detail);
+ }
+
+ @SuppressLint("SetTextI18n")
+ @Override
+ protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
+ TextView tvNumber = holder.getView(R.id.tvNumber);
+ ImageView imageView = holder.getView(R.id.ivTopic);
+ int number = getData().indexOf(homeWork) + 1;
+ tvNumber.setText("第" + number + "题");
+ Glide.with(mContext).load(homeWork.url).into(imageView);
+ }
+ }
+}
diff --git a/app/src/main/java/com/hjx/parent/HomeworkSelectActivity.java b/app/src/main/java/com/hjx/parent/HomeworkSelectActivity.java
new file mode 100644
index 0000000..07e982c
--- /dev/null
+++ b/app/src/main/java/com/hjx/parent/HomeworkSelectActivity.java
@@ -0,0 +1,103 @@
+package com.hjx.parent;
+
+import android.annotation.SuppressLint;
+import android.content.res.ColorStateList;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.MutableLiveData;
+
+import com.bumptech.glide.Glide;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.hjx.parent.databinding.ActivityHomeworkSelectBinding;
+import com.hjx.parent.function.Function1;
+import com.hjx.parent.rx.BaseRxActivity;
+import com.prws.common.bean.homework.HomeWork;
+import com.prws.common.bean.homework.HomeworkList;
+
+import java.util.ArrayList;
+
+public class HomeworkSelectActivity extends BaseRxActivity {
+
+ private HomeworkList mData;
+ private ArrayList mList;
+ private Adapter mAdapter = new Adapter();
+
+ MutableLiveData selectNum = new MutableLiveData<>(0);
+
+ @SuppressLint("NotifyDataSetChanged")
+ @SuppressWarnings("unchecked,ConstantConditions")
+ @Override
+ public void initView(Bundle savedInstanceState) {
+ binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
+ mData = (HomeworkList) getIntent().getSerializableExtra("data");
+ mList = (ArrayList) getIntent().getSerializableExtra("list");
+
+ mAdapter.setNewData(mList);
+ binding.recyclerView.setAdapter(mAdapter);
+
+ mAdapter.selectCall = i -> selectNum.setValue(selectNum.getValue() + i);
+ selectNum.observe(this, i -> {
+ binding.tvNumber.setText(String.valueOf(i));
+ if (i == 0) {
+ binding.btnConfirm.setText("作业全对");
+ binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78));
+ } else {
+ binding.btnConfirm.setText("下一步");
+ binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3));
+ }
+ binding.chkAll.setChecked(i == mList.size() && i != 0);
+ });
+
+ binding.chkAll.setOnClickListener(v -> {
+ if (mList.size() == 0) return;
+ boolean b = binding.chkAll.isChecked();
+ for (HomeWork item: mList) {
+ item.check = b;
+ }
+ selectNum.setValue(b ? mList.size() : 0);
+ mAdapter.notifyDataSetChanged();
+ });
+ }
+
+ @Override
+ protected ActivityHomeworkSelectBinding getViewBinding() {
+ return ActivityHomeworkSelectBinding.inflate(getLayoutInflater());
+ }
+
+
+ static class Adapter extends BaseQuickAdapter {
+ public Adapter() {
+ super(R.layout.item_homework_detail);
+ }
+ public Function1 selectCall;
+
+ @SuppressLint("SetTextI18n")
+ @Override
+ protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
+ TextView tvNumber = holder.getView(R.id.tvNumber);
+ ImageView imageView = holder.getView(R.id.ivTopic);
+ int number = getData().indexOf(homeWork) + 1;
+ tvNumber.setText("第" + number + "题");
+ Glide.with(mContext).load(homeWork.url).into(imageView);
+
+ CheckBox checkBox = holder.getView(R.id.checkbox);
+ checkBox.setVisibility(View.VISIBLE);
+ checkBox.setOnCheckedChangeListener(null);
+ checkBox.setChecked(homeWork.check);
+
+ holder.itemView.setOnClickListener(v -> checkBox.performClick());
+ checkBox.setOnCheckedChangeListener((v, b) -> {
+ homeWork.check = b;
+ if (selectCall != null) {
+ selectCall.invoke(b ? 1 : -1);
+ }
+ });
+ }
+ }
+}
diff --git a/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java b/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java
index 16ff5cb..6944d83 100644
--- a/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java
+++ b/app/src/main/java/com/hjx/parent/adapter/HomeworkListAdapter.java
@@ -1,5 +1,6 @@
package com.hjx.parent.adapter;
+import android.content.Intent;
import android.view.View;
import android.widget.TextView;
@@ -7,6 +8,8 @@ import androidx.annotation.NonNull;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
+import com.google.gson.Gson;
+import com.hjx.parent.HomeworkDetailActivity;
import com.hjx.parent.R;
import com.hjx.parent.function.Function0;
import com.hjx.parent.function.Function1;
@@ -63,7 +66,9 @@ public class HomeworkListAdapter extends BaseQuickAdapter {
- // TODO
+ Intent intent = new Intent(mContext, HomeworkDetailActivity.class);
+ intent.putExtra("data", new Gson().toJson(homework));
+ mContext.startActivity(intent);
});
}
}
diff --git a/app/src/main/java/com/hjx/parent/rx/ILifecycleActivity.java b/app/src/main/java/com/hjx/parent/rx/ILifecycleActivity.java
index 76bb1c5..ce0e070 100644
--- a/app/src/main/java/com/hjx/parent/rx/ILifecycleActivity.java
+++ b/app/src/main/java/com/hjx/parent/rx/ILifecycleActivity.java
@@ -4,9 +4,12 @@ import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
import io.reactivex.Observable;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
import io.reactivex.Observer;
import io.reactivex.Single;
import io.reactivex.SingleObserver;
+import io.reactivex.SingleTransformer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
@@ -45,4 +48,17 @@ public interface ILifecycleActivity {
.compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()))
.subscribe(onNext);
}
+
+ default ObservableTransformer transform() {
+ return upstream -> upstream.subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()));
+ }
+
+ default SingleTransformer transformSingle() {
+ return upstream -> upstream.subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .compose(RxLifecycleAndroid.bindActivity(getRxLifecycle()));
+ }
+
}
diff --git a/app/src/main/res/drawable/chk_circle.xml b/app/src/main/res/drawable/chk_circle.xml
new file mode 100644
index 0000000..92edb56
--- /dev/null
+++ b/app/src/main/res/drawable/chk_circle.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/svg_homework_edit.xml b/app/src/main/res/drawable/svg_homework_edit.xml
new file mode 100644
index 0000000..6201ba8
--- /dev/null
+++ b/app/src/main/res/drawable/svg_homework_edit.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/svg_select_circle_off.xml b/app/src/main/res/drawable/svg_select_circle_off.xml
new file mode 100644
index 0000000..5168088
--- /dev/null
+++ b/app/src/main/res/drawable/svg_select_circle_off.xml
@@ -0,0 +1,14 @@
+
+
+
diff --git a/app/src/main/res/drawable/svg_select_circle_on.xml b/app/src/main/res/drawable/svg_select_circle_on.xml
new file mode 100644
index 0000000..88feda5
--- /dev/null
+++ b/app/src/main/res/drawable/svg_select_circle_on.xml
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_homework_detail.xml b/app/src/main/res/layout/activity_homework_detail.xml
new file mode 100644
index 0000000..fb12e87
--- /dev/null
+++ b/app/src/main/res/layout/activity_homework_detail.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_homework_select.xml b/app/src/main/res/layout/activity_homework_select.xml
new file mode 100644
index 0000000..0fb2ecb
--- /dev/null
+++ b/app/src/main/res/layout/activity_homework_select.xml
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_homework_detail.xml b/app/src/main/res/layout/item_homework_detail.xml
new file mode 100644
index 0000000..87f57bd
--- /dev/null
+++ b/app/src/main/res/layout/item_homework_detail.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java b/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java
new file mode 100644
index 0000000..0ec5899
--- /dev/null
+++ b/libs/common/src/main/java/com/prws/common/bean/homework/HomeWork.java
@@ -0,0 +1,21 @@
+package com.prws.common.bean.homework;
+
+import com.google.gson.annotations.SerializedName;
+
+import java.io.Serializable;
+
+public class HomeWork implements Serializable {
+
+ @SerializedName(value = "homeworkId", alternate = "id")
+ public Integer homeworkId;
+ public String brief;
+ public String url;
+ public String analyseUrl;
+ public String analyseVideoUrl;
+ public Integer correction;
+ public String answer;
+ public String points;
+
+ public boolean check = false;
+
+}
diff --git a/libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java b/libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java
index 3b3f8dc..61b8b31 100644
--- a/libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java
+++ b/libs/common/src/main/java/com/prws/common/bean/homework/HomeworkList.java
@@ -2,11 +2,12 @@ package com.prws.common.bean.homework;
import com.google.gson.annotations.SerializedName;
+import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
-public class HomeworkList implements Comparable {
+public class HomeworkList implements Comparable, Serializable {
@SerializedName(value = "homeworkId", alternate = "id")
private String homeworkId;
@@ -97,10 +98,10 @@ public class HomeworkList implements Comparable {
}
private String time;
- private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
public String getFormatTime() {
if (uploadTime == null) return "";
if (time != null) return time;
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
time = format.format(uploadTime);
return time;
}
diff --git a/libs/common/src/main/java/com/prws/common/net/NetWorks.java b/libs/common/src/main/java/com/prws/common/net/NetWorks.java
index 22967d5..e6854b2 100644
--- a/libs/common/src/main/java/com/prws/common/net/NetWorks.java
+++ b/libs/common/src/main/java/com/prws/common/net/NetWorks.java
@@ -14,6 +14,7 @@ import com.prws.common.bean.Teacher;
import com.prws.common.bean.TopicBean;
import com.prws.common.bean.UpdateBean;
import com.prws.common.bean.baidu.BaiduInput;
+import com.prws.common.bean.homework.HomeWork;
import com.prws.common.bean.homework.HomeworkList;
import com.prws.common.utils.BitmapUtils;
import com.prws.common.utils.SharedPreferencesUtil;
@@ -198,6 +199,9 @@ public class NetWorks extends RetrofitUtils {
@Query("homeworkId") String homeworkId
);
+ @GET("api/v1/homework/listHomeworkById")
+ Single>> getHomeworkDetail(@Header("Authorization") String token, @Query("homeworkId") String homeworkId);
+
}
public static String getUserId() {