HomeworkFeedbackActivity.java 4.22 KB
package com.hjx.parent;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.hjx.parent.databinding.ActivityHomeworkFeedbackBinding;
import com.hjx.parent.rx.BaseRxActivity;
import com.prws.common.bean.Student;
import com.prws.common.bean.homework.HomeWork;
import com.prws.common.bean.homework.HomeworkList;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

public class HomeworkFeedbackActivity extends BaseRxActivity<ActivityHomeworkFeedbackBinding> {
    private Student student;
    private HomeworkList mData;
    private ArrayList<HomeWork> mList;

    @SuppressWarnings("unchecked")
    @Override
    public void initView(Bundle savedInstanceState) {
        binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
        student = (Student) getIntent().getSerializableExtra("student");
        mData = (HomeworkList) getIntent().getSerializableExtra("data");
        mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list");

        binding.tvStuName.setText(student.stuName);
        binding.tvGrade.setText(student.grade);

        List<HomeWork> errorList = new ArrayList<>();
        int correctNo = 0;
        for (HomeWork homeWork: mList) {
            homeWork.homeworkId = mData.getId();
            if (!homeWork.check) correctNo ++;
            else errorList.add(homeWork);
        }
        binding.tvPercent.setText(new DecimalFormat("0%").format(1f * correctNo / mList.size()));

        binding.rvCorrect.setLayoutManager(new FlexboxLayoutManager(this));
        binding.rvCorrect.setAdapter(new NumberAdapter(mList));
        binding.rvError.setVisibility(errorList.isEmpty() ? View.GONE : View.VISIBLE);
        binding.rvError.setAdapter(new EvalAdapter(errorList));
    }

    @Override
    protected ActivityHomeworkFeedbackBinding getViewBinding() {
        return ActivityHomeworkFeedbackBinding.inflate(getLayoutInflater());
    }

    static class NumberAdapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {

        public NumberAdapter(List<HomeWork> list) {
            super(R.layout.item_feedback_num, list);
        }

        @Override
        protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
            int position = getData().indexOf(homeWork);
            holder.setText(R.id.tvNum, String.valueOf(position + 1));
            if (homeWork.check) {
                holder.setImageResource(R.id.ivType, R.drawable.ic_wrong_small);
            } else {
                holder.setImageResource(R.id.ivType, R.drawable.ic_correct_small);
            }
        }
    }

    static class EvalAdapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {

        public EvalAdapter(@Nullable List<HomeWork> data) {
            super(R.layout.item_homework_eval, data);
        }

        @Override
        protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
            holder.itemView.setClipToOutline(true);
            holder.setText(R.id.tvNo, "题目" + (homeWork.index + 1));
            ImageView iv = holder.getView(R.id.ivTopic);
            Glide.with(mContext).load(homeWork.url).into(iv);

            RadioButton chk1 = holder.getView(R.id.chk1);
            RadioButton chk2 = holder.getView(R.id.chk2);
            RadioButton chk3 = holder.getView(R.id.chk3);
            chk1.setOnCheckedChangeListener((v, b) -> {
                if (b) {
                    homeWork.state = 1;
                }
            });
            chk2.setOnCheckedChangeListener((v, b) -> {
                if (b) {
                    homeWork.state = 2;
                }
            });
            chk3.setOnCheckedChangeListener((v, b) -> {
                if (b) {
                    homeWork.state = 3;
                }
            });
            chk1.setChecked(homeWork.state == 1);
            chk2.setChecked(homeWork.state == 2);
            chk3.setChecked(homeWork.state == 3);
        }
    }
}