HomeworkTopicActivity.java 4.13 KB
package com.hjx.parent;

import android.annotation.SuppressLint;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.view.View;
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.google.gson.Gson;
import com.hjx.parent.databinding.ActivityTopicDetailBinding;
import com.hjx.parent.dialog.PhotoViewDialog;
import com.hjx.parent.rx.BaseRxActivity;
import com.prws.common.bean.homework.HomeWork;
import com.prws.common.bean.homework.KeyValue;

import java.util.ArrayList;
import java.util.List;

public class HomeworkTopicActivity extends BaseRxActivity<ActivityTopicDetailBinding> {
    private ArrayList<HomeWork> mList;
    private int position;

    @SuppressWarnings("unchecked")
    @Override
    public void initView(Bundle savedInstanceState) {
        mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list");
        position = getIntent().getIntExtra("position", 0);
        binding.toolbar.setNavigationOnClickListener(v -> onBackPressed());
        NumberAdapter adapter = new NumberAdapter(mList);
        binding.rvNumber.setAdapter(adapter);

        binding.btnPre.setOnClickListener(v -> showTopic(position - 1));
        binding.btnNext.setOnClickListener(v -> showTopic(position + 1));
        adapter.setOnItemClickListener((baseQuickAdapter, view, i) -> {
            if (position == i) return;
            showTopic(i);
        });
        showTopic(position);
    }

    @SuppressLint("SetTextI18n")
    private void showTopic(int position) {
        if (position < 0 || position >= mList.size()) return;
        this.position = position;
        binding.btnPre.setEnabled(position > 0);
        binding.btnNext.setEnabled(position < mList.size() - 1);
        binding.tvTitle.setText((position + 1) + "/" + mList.size());
        binding.tvNo.setText("题目" + (position + 1));

        HomeWork homeWork = mList.get(position);
        Glide.with(this).load(homeWork.url).into(binding.ivTopic);
        binding.ivTopic.setOnClickListener(v -> {
            new PhotoViewDialog(this).show(homeWork.url);
        });
        Glide.with(this).load(homeWork.analyseUrl).into(binding.ivAnalyse);
        binding.ivAnalyse.setOnClickListener(v -> {
            if (homeWork.analyseUrl == null || homeWork.analyseUrl.isEmpty()) return;
            new PhotoViewDialog(this).show(homeWork.analyseUrl);
        });
        String answer = homeWork.answer == null ? "" : homeWork.answer
                .replace("<br />", "\n")
                .replace("${", "")
                .replace("}$", "");
        binding.tvAnswer.setText(answer);
        if (homeWork.pointsObj == null) homeWork.formatPoints(new Gson());
        StringBuilder pointBuilder = new StringBuilder();
        for (KeyValue point: homeWork.pointsObj) {
            pointBuilder.append("\n").append(point.Value);
        }
        binding.tvPoint.setText(homeWork.pointsObj.size() == 0 ? "" : pointBuilder.substring(1));
    }

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

    static class NumberAdapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> {

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

        @Override
        protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) {
            TextView textView = (TextView) holder.itemView;
            textView.setText(String.valueOf(getData().indexOf(homeWork) + 1));

            if (homeWork.correction == null || homeWork.correction == 2) {
                textView.setBackgroundTintList(ColorStateList.valueOf(0xFF999999));
            } else if (homeWork.correction == 0) {
                textView.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78));
            } else if (homeWork.correction == 1) {
                textView.setBackgroundTintList(ColorStateList.valueOf(0xFFFF4133));
            }
        }
    }
}