HomeFragment.java 9.04 KB
package com.hjx.parent.fragment;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

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.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.gson.Gson;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.hjx.parent.ChooseActivity;
import com.hjx.parent.ErrorBookActivity;
import com.hjx.parent.QRActivity;
import com.hjx.parent.R;
import com.hjx.parent.bean.StudentBean;
import com.prws.common.base.BaseFragment;
import com.prws.common.bean.ResponseResult;
import com.prws.common.bean.ScheduleBean;
import com.prws.common.bean.Video;
import com.prws.common.net.NetWorks;
import com.prws.common.utils.ScreenUtils;
import com.prws.common.utils.SharedPreferencesUtil;
import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;

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

import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

public class HomeFragment extends BaseFragment {
    @Override
    protected int getLayoutRes() {
        return R.layout.fragment_home;
    }

    ImageView iv_sapmiao;
    TextView tv_name;
    StudentBean studentBean;
    ImageView iv_2;
    @BindView(R.id.recycle)
    RecyclerView recyclerView;
    @BindView(R.id.tv_empty)
    TextView tv_empty;
    @BindView(R.id.iv_empty)
    ImageView iv_empty;

    @Override
    protected void initDatas() {
        super.initDatas();
        iv_2 = mRootView.findViewById(R.id.iv_2);
        iv_sapmiao = mRootView.findViewById(R.id.iv_sapmiao);
        tv_name = mRootView.findViewById(R.id.tv_name);
        iv_sapmiao.setOnClickListener(view -> {
            if (!XXPermissions.isGranted(getActivity(), Permission.CAMERA)) {
                XXPermissions.with(getActivity())
                        // 申请多个权限
                        .permission(Permission.CAMERA)
                        .request(new OnPermissionCallback() {
                            @Override
                            public void onGranted(List<String> permissions, boolean all) {
                                if (all) {
                                    //开启扫码界面
                                    startQRView();


                                } else {
                                    Toast.makeText(getActivity(), "需要相机权限", Toast.LENGTH_SHORT).show();
                                }
                            }

                            @Override
                            public void onDenied(List<String> permissions, boolean never) {
                                XXPermissions.startPermissionActivity(getActivity(), permissions);
                            }
                        });
            } else {
                startQRView();
            }

        });
    }

    @OnClick({R.id.ll_device, R.id.ll_app})
    public void goApps(View view) {
        Toast.makeText(getActivity(), "功能暂未上线,敬请期待", Toast.LENGTH_SHORT).show();
    }

    @OnClick(R.id.ll_error)
    public void goError(View view) {
        Intent intent = new Intent(getActivity(), ErrorBookActivity.class);
        startActivity(intent);
    }

    @Override
    public void onResume() {
        super.onResume();
        String student = (String) SharedPreferencesUtil.getData("student", "");
        try {
            studentBean = new Gson().fromJson(student, StudentBean.class);
            tv_name.setText(studentBean.getNickName());
            if (TextUtils.isEmpty(studentBean.getPhoto())) {
                iv_2.setImageResource(studentBean.getGender() == 0 ? R.mipmap.ic_avatar_male : R.mipmap.ic_avatar_female);
            } else {
                RoundedCorners roundedCorners = new RoundedCorners(ScreenUtils.dpToPx(getContext(), 30));
                RequestOptions options = RequestOptions.bitmapTransform(roundedCorners);
                Glide.with(getActivity()).load(studentBean.getPhoto()).apply(options).into(iv_2);
            }
            getWeekPlan(studentBean.getStuId());
        } catch (Exception e) {

        }
    }

    public void getWeekPlan(String id) {
        NetWorks.getWeekPlan(id, new Observer<ResponseResult<ScheduleBean>>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(ResponseResult<ScheduleBean> result) {
                if (result != null && result.getCode() == 200) {
                    showWeekPlan(result.getData().getList());
                }
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

    public void startQRView() {
        startActivityForResult(new Intent(getActivity(), QRActivity.class), 101);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 101) {
            if (null != data) {
                Bundle bundle = data.getExtras();
                if (bundle == null) {
                    return;
                }
                if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
                    String result = bundle.getString(CodeUtils.RESULT_STRING);
                    Toast.makeText(getActivity(), "解析结果:" + result, Toast.LENGTH_LONG).show();
                } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
                    Toast.makeText(getActivity(), "解析二维码失败", Toast.LENGTH_LONG).show();
                }
            }
        }
    }

    @OnClick({R.id.iv_3, R.id.tv_name})
    public void choose(View view) {
        Intent intent = new Intent(getActivity(), ChooseActivity.class);
        startActivity(intent);
    }

    @OnClick(R.id.iv_1)
    public void exit(View view) {
        getActivity().finish();
    }

    private void showWeekPlan(List<Video> list) {
        iv_empty.setVisibility(list.size() > 0 ? View.GONE : View.VISIBLE);
        tv_empty.setVisibility(list.size() > 0 ? View.GONE : View.VISIBLE);
        List<Schedule> schedules = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            String date = new SimpleDateFormat("yyyy.MM.dd").format(list.get(i).getStudyTime());
            if (schedules.size() > 0 && schedules.get(schedules.size() - 1).getDate().equals(date)) {
                schedules.get(schedules.size() - 1).getStrings().add(list.get(i).getSectionChildName());
            } else {
                List<String> stringList = new ArrayList<>();
                Schedule schedule = new Schedule();
                schedule.setDate(date);
                stringList.add(list.get(i).getSectionChildName());
                schedule.setStrings(stringList);
                schedules.add(schedule);
            }
        }
        BaseQuickAdapter adapter = new BaseQuickAdapter(R.layout.item_schedule, schedules) {
            @Override
            public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

            }

            @Override
            protected void convert(@NonNull BaseViewHolder item, Object o) {
                Schedule schedule = schedules.get(item.getAdapterPosition());
                item.setText(R.id.tv_date, schedule.getDate());
                LinearLayout layout = item.getView(R.id.ll_schedule);
                for (int i = 0; i < schedule.getStrings().size(); i++) {
                    View view = LayoutInflater.from(getContext()).inflate(R.layout.item_video, null);
                    TextView textView = view.findViewById(R.id.tv_name);
                    textView.setText(schedule.getStrings().get(i));
                    layout.addView(view);
                }
            }
        };
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false));
        recyclerView.setAdapter(adapter);
    }

    class Schedule {
        String date;
        List<String> strings;

        public void setDate(String date) {
            this.date = date;
        }

        public void setStrings(List<String> strings) {
            this.strings = strings;
        }

        public String getDate() {
            return date;
        }

        public List<String> getStrings() {
            return strings;
        }
    }
}