HomeworkSelectActivity.java 5.19 KB
package com.hjx.parent;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.TextView;

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.hjx.parent.databinding.ActivityHomeworkSelectBinding;
import com.hjx.parent.function.Function0;
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.util.ArrayList;

public class HomeworkSelectActivity extends BaseRxActivity<ActivityHomeworkSelectBinding> {

    private Student student;
    private HomeworkList mData;
    private ArrayList<HomeWork> mList;
    private Adapter mAdapter = new Adapter();

    @SuppressLint("NotifyDataSetChanged")
    @SuppressWarnings("unchecked,ConstantConditions")
    @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");
        if (mList == null) mList = new ArrayList<>();
        for (HomeWork homeWork: mList) {
            homeWork.correction = 0;
        }

        mAdapter.setNewData(mList);
        binding.recyclerView.setAdapter(mAdapter);

        mAdapter.selectCall = () -> {
            int right = 0, error = 0, blank = 0;
            for (HomeWork homeWork: mList) {
                if (homeWork.correction == 0) right ++;
                else if (homeWork.correction == 1) error ++;
                else if (homeWork.correction == 2) blank ++;
            }
            binding.tvNumber.setText(String.valueOf(error));
            binding.tvBlankNumber.setText(String.valueOf(blank));
//            if (right == mList.size()) {
//                binding.btnConfirm.setText("作业全对");
//                binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78));
//            } else {
//                binding.btnConfirm.setText("下一步");
//                binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3));
//            }
        };

        binding.btnConfirm.setOnClickListener(v -> {
            Intent intent = new Intent(this, HomeworkFeedbackActivity.class);
            intent.putExtra("data", mData);
            intent.putExtra("list", mList);
            intent.putExtra("student", student);
            startActivityForResult(intent, 0xA01);
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0xA01 && resultCode == RESULT_OK) {
            setResult(RESULT_OK);
            finish();
        }
    }

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


    static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {
        public Adapter() {
            super(R.layout.item_homework_detail);
        }
        public Function0 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);

            setBackground(homeWork, holder);
            RadioGroup radioGroup = holder.getView(R.id.radioGroup);
            radioGroup.setVisibility(View.VISIBLE);

            radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
                if (checkedId == R.id.rbRight) homeWork.correction = 0;
                else if (checkedId == R.id.rbError) homeWork.correction = 1;
                else if (checkedId == R.id.rbBlank) homeWork.correction = 2;
                setBackground(homeWork, holder);
                selectCall.invoke();
            });
        }

        private void setBackground(HomeWork homeWork, BaseViewHolder helper) {
            if (homeWork.correction == 0) {
                helper.setBackgroundRes(R.id.root, R.drawable.bg_feedback_right);
                helper.setChecked(R.id.rbRight, true);
            } else if (homeWork.correction == 1) {
                helper.setBackgroundRes(R.id.root, R.drawable.bg_feedback_error);
                helper.setChecked(R.id.rbError, true);
            } else if (homeWork.correction == 2) {
                helper.setBackgroundRes(R.id.root, R.drawable.bg_feedback_blank);
                helper.setChecked(R.id.rbBlank, true);
            }
        }
    }
}