TeacherFragment.java 10.5 KB
package com.hjx.parent.fragment;

import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.gson.Gson;
import com.hjx.parent.AccountActivity;
import com.hjx.parent.ErrorDetailActivity;
import com.hjx.parent.LoginActivity;
import com.hjx.parent.R;
import com.hjx.parent.TeacherChooseActivity;
import com.hjx.parent.bean.StudentBean;
import com.hjx.parent.databinding.FragmentTeacherBinding;
import com.prws.common.bean.Record;
import com.prws.common.net.NetWorks;
import com.prws.common.utils.CommonUtil;
import com.prws.common.utils.LogUtil;
import com.prws.common.utils.ScreenUtils;
import com.prws.common.utils.SharedPreferencesUtil;
import com.prws.common.utils.StringUtils;

import org.json.JSONArray;
import org.json.JSONObject;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.logging.SimpleFormatter;

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

public class TeacherFragment extends BaseBindingFragment<FragmentTeacherBinding> {
    ArrayList<Record> alist = new ArrayList<>();

    @Override
    protected FragmentTeacherBinding onCreateViewBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent) {
        return FragmentTeacherBinding.inflate(inflater, parent, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        String photo = (String) SharedPreferencesUtil.getData("photo", "");
        if (!TextUtils.isEmpty(photo)) {
            RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 45));
            RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
            Glide.with(getContext()).load(photo).apply(options).into(getBinding().ivTeacher);
        }
        String name = (String) SharedPreferencesUtil.getData("name", "");
        getBinding().tvTeacher.setText(name);
        getBinding().tvAnswerName.setText("亲爱的" + name + "老师");
        getBinding().logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                logout();
            }
        });
        NetWorks.listRecord(new Observer<ResponseBody>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(ResponseBody responseBody) {
                try {
                    String str = responseBody.string().toString();
                    LogUtil.e("TAG", "----" + str);
                    JSONObject jo = new JSONObject(str);
                    boolean isSucceed = jo.getBoolean("success");
                    if (isSucceed) {
                        JSONArray jarr = jo.getJSONArray("data");
                        if (jarr.length() > 0) {
                            getBinding().tvNum.setText("您有" + jarr.length() + "个题目需要答疑");
                            alist.clear();
                            for (int i = 0; i < jarr.length(); i++) {
                                JSONObject jo2 = jarr.getJSONObject(i);
                                Gson gson = new Gson();
                                Record sb = gson.fromJson(jo2.toString(), Record.class);
                                alist.add(sb);
                            }
                            loadList();
                        } else {
                            getBinding().tvNum.setText("您暂时没有题目需要答疑");
                        }
                    } else {

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

    }

    private void loadList() {
        BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_record, alist) {
            @Override
            protected void convert(@NonNull BaseViewHolder item, Object o) {
                Record record = alist.get(item.getAdapterPosition());
                item.setText(R.id.tv_name, record.getStuName());
                item.setText(R.id.tv_date, "提问时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(record.getAskTime()));
                if (TextUtils.isEmpty(record.getPhoto())) {
                    item.setImageResource(R.id.iv_student, "男".equals(record.getGender()) ? R.mipmap.ic_avatar_male : R.mipmap.ic_avatar_female);
                } else {
                    RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 45));
                    RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
                    Glide.with(getContext()).load(record.getPhoto()).apply(options).into((ImageView) item.getView(R.id.iv_student));
                }
                if (TextUtils.isEmpty(record.getContent())) {
                    item.setGone(R.id.iv_topic, true);
                    item.setGone(R.id.webview, false);
                    int maxWidth = CommonUtil.getScreenWidth(getContext()) - CommonUtil.dpToPx(getContext(), 60);
                    Glide.with(getContext()).load(record.getQuestionUrl()).into(new SimpleTarget<Drawable>() {
                        @Override
                        public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                            int width = resource.getIntrinsicWidth();
                            int height = resource.getIntrinsicHeight();
                            int newHeight = maxWidth * height / width;
                            LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) item.getView(R.id.iv_topic).getLayoutParams();
                            layoutParams.width = maxWidth;
                            layoutParams.height = newHeight;
                            item.getView(R.id.iv_topic).setLayoutParams(layoutParams);
                            ((ImageView) item.getView(R.id.iv_topic)).setImageDrawable(resource);
                        }
                    });
                } else {
                    item.setGone(R.id.iv_topic, false);
                    item.setGone(R.id.webview, true);
                    WebView webView = item.getView(R.id.webview);
                    String linkCss = "<link rel=\"stylesheet\" href=\"file:///android_asset/style.css\" type=\"text/css\">";
                    StringBuilder sb = new StringBuilder(4096);
                    if (!TextUtils.isEmpty(record.getLabel())) {
                        sb.append(record.getLabel());
                    }
                    sb.append(record.getContent());
                    if (record.getOptions() != null && record.getOptionsList().size() > 0) {
                        sb.append("<div class='pt1'>");
                        sb.append(StringUtils.OptionsHtml(record.getOptionsList(), null));
                        sb.append("</div>");
                    }
                    String body = "<html><header>" + linkCss + "</header>" + sb.toString() + "</body></html>";
                    WebSettings settings = webView.getSettings();
                    settings.setUseWideViewPort(true);//设定支持 viewport
                    settings.setLoadWithOverviewMode(true);   //自适应屏幕
                    webView.loadDataWithBaseURL(linkCss, body, "text/html", "UTF-8", null);
                    webView.setVisibility(View.VISIBLE);
                    webView.setOnTouchListener(new View.OnTouchListener() {
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            return true;
                        }
                    });
                }
            }

            @Override
            public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

            }
        };
        getBinding().recycleError.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
        getBinding().recycleError.setAdapter(adapter);
    }

    public void logout() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), android.R.style.Theme_DeviceDefault_Light_Dialog_Alert);
        builder.setTitle("温馨提示");
        builder.setMessage("是否退出登录?");
        builder.setCancelable(false);
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                SharedPreferencesUtil.clear(getContext());
                restartApp();
            }
        });
        builder.show();
    }

    private void restartApp() {
        //重启app,这一步一定要加上,如果不重启app,可能打开新的页面显示的语言会不正确
        Intent intent = new Intent(getContext(), LoginActivity.class);
        intent.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(0);
    }

}