ErrorDetailActivity.java 7.53 KB
package com.hjx.parent;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.webkit.WebSettings;
import android.widget.AdapterView;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.bumptech.glide.Glide;
import com.hjx.parent.databinding.ActivityErrorDetailBinding;
import com.hjx.parent.dialog.ErrorEditDialog;
import com.prws.common.bean.ErrorDetailBean;
import com.prws.common.bean.ResponseResult;
import com.prws.common.bean.TopicBean;
import com.prws.common.net.NetWorks;
import com.prws.common.utils.CommonUtil;
import com.prws.common.utils.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

public class ErrorDetailActivity extends BaseActivity<ActivityErrorDetailBinding> {
    private TopicBean bean;

    @Override
    public void initView(Bundle savedInstanceState) {
        bean = (TopicBean) getIntent().getSerializableExtra("errorBean");
        loadError();
    }

    public void loadError() {
        if (bean.getBean() != null) {
            ErrorDetailBean errorDetailBean = bean.getBean();
            if (TextUtils.isEmpty(errorDetailBean.getContent())) {
                binding.llOrigin.setVisibility(View.GONE);
            } else {
                String linkCss = "<link rel=\"stylesheet\" href=\"file:///android_asset/style.css\" type=\"text/css\">";
                StringBuilder sb = new StringBuilder(4096);
                if (!TextUtils.isEmpty(errorDetailBean.getLabel())) {
                    sb.append(errorDetailBean.getLabel());
                }
                sb.append(errorDetailBean.getContent());
                if (errorDetailBean.getOptions() != null && errorDetailBean.getOptions().size() > 0) {
                    sb.append("<div class='pt1'>");
                    sb.append(StringUtils.OptionsHtml(errorDetailBean.getOptions(), null));
                    sb.append("</div>");
                }
                String body = "<html><header>" + linkCss + "</header>" + sb.toString() + "</body></html>";
                binding.webContent.loadDataWithBaseURL(linkCss, body, "text/html", "UTF-8", null);
                binding.webContent.setVisibility(View.VISIBLE);
                binding.llOrigin.setVisibility(View.VISIBLE);
            }
            if (TextUtils.isEmpty(errorDetailBean.getMethod())) {
                binding.llAnalyse.setVisibility(View.GONE);
            } else {
                binding.llAnalyse.setVisibility(View.VISIBLE);
                String linkCss = "<link rel=\"stylesheet\" href=\"file:///android_asset/style.css\" type=\"text/css\">";
                String body = "<html><header>" + linkCss + "</header>" + errorDetailBean.getMethod() + "</body></html>";
                binding.webAnalyse.loadDataWithBaseURL(linkCss, body, "text/html", "UTF-8", null);
            }
            if (TextUtils.isEmpty(errorDetailBean.getDisplayAnswer())) {
                binding.llAnswer.setVisibility(View.GONE);
            } else {
                binding.llAnswer.setVisibility(View.VISIBLE);
                String linkCss = "<link rel=\"stylesheet\" href=\"file:///android_asset/style.css\" type=\"text/css\">";
                String body = "<html><header>" + linkCss + "</header>" + errorDetailBean.getDisplayAnswer() + "</body></html>";
                binding.webAnswer.loadDataWithBaseURL(linkCss, body, "text/html", "UTF-8", null);
            }
            if (errorDetailBean.getPoints().size() > 0) {
                List<String> points = new ArrayList<>();
                String topic = "";
                for (int j = 0; j < errorDetailBean.getPoints().size(); j++) {
                    if (j > 0) {
                        topic += "、";
                    }
                    topic += errorDetailBean.getPoints().get(j).getValue();
                    points.add(errorDetailBean.getPoints().get(j).getKey());
                }
                binding.llPoints.setVisibility(View.VISIBLE);
                binding.tvPoints.setText(topic);
            } else {
                binding.llPoints.setVisibility(View.GONE);
            }
        } else {
            binding.llAnalyse.setVisibility(View.GONE);
            binding.llAnswer.setVisibility(View.GONE);
            binding.llOrigin.setVisibility(View.GONE);
            binding.llPoints.setVisibility(View.GONE);
        }
        if (TextUtils.isEmpty(bean.getPath())) {
            binding.llPic.setVisibility(View.GONE);
        } else {
            Glide.with(context).load(bean.getPath()).override(CommonUtil.getScreenWidth(context) - CommonUtil.dpToPx(context, 40), CommonUtil.dpToPx(context, 90)).fitCenter().into(binding.ivTopic);
        }
        binding.tvTitle.setText(bean.getName());
        RadioButton typeButton = (RadioButton) binding.typeRadio.getChildAt(bean.getIsDone());
        typeButton.setChecked(true);
        binding.typeRadio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                saveError();
            }
        });
        binding.spinnerReason.setSelection(bean.getReason());
        binding.spinnerReason.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                saveError();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        binding.ivBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        binding.ivEdit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<TopicBean> topicBeans = new ArrayList<>();
                topicBeans.add(bean);
                ErrorEditDialog errorEditDialog = new ErrorEditDialog(context, topicBeans, new ErrorEditDialog.EditInterface() {
                    @Override
                    public void edit(String name, int reason) {
                        binding.tvTitle.setText(name);
                        binding.spinnerReason.setSelection(reason);
                    }
                });
                errorEditDialog.show();
            }
        });
    }

    public void saveError() {
        int done = 0;
        for (int i = 0; i < binding.typeRadio.getChildCount(); i++) {
            RadioButton rb = (RadioButton) binding.typeRadio.getChildAt(i);
            if (rb.isChecked()) {
                done = i;
            }
        }
        bean.setDone(done == 1);
        Map<String, Object> map = new HashMap<>();
        map.put("bookId", bean.getId());
        map.put("controlFlag", done == 1 ? 0 : 1);
        map.put("errorReason", binding.spinnerReason.getSelectedItemPosition());
        NetWorks.editError(map, new Observer<ResponseResult>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(ResponseResult responseResult) {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

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