Commit 81845301598ac0b3d3a960686d9928006cbc4905
1 parent
b4bc21d212
Exists in
master
选中题目时展示边框
Showing
2 changed files
with
24 additions
and
0 deletions
Show diff stats
app/src/main/java/com/hjx/parent/HomeworkSelectActivity.java
| 1 | package com.hjx.parent; | 1 | package com.hjx.parent; |
| 2 | 2 | ||
| 3 | import android.annotation.SuppressLint; | 3 | import android.annotation.SuppressLint; |
| 4 | import android.content.Intent; | 4 | import android.content.Intent; |
| 5 | import android.content.res.ColorStateList; | 5 | import android.content.res.ColorStateList; |
| 6 | import android.graphics.drawable.Drawable; | ||
| 6 | import android.os.Bundle; | 7 | import android.os.Bundle; |
| 7 | import android.view.View; | 8 | import android.view.View; |
| 8 | import android.widget.CheckBox; | 9 | import android.widget.CheckBox; |
| 9 | import android.widget.ImageView; | 10 | import android.widget.ImageView; |
| 10 | import android.widget.TextView; | 11 | import android.widget.TextView; |
| 11 | 12 | ||
| 13 | import androidx.annotation.DrawableRes; | ||
| 12 | import androidx.annotation.NonNull; | 14 | import androidx.annotation.NonNull; |
| 13 | import androidx.annotation.Nullable; | 15 | import androidx.annotation.Nullable; |
| 16 | import androidx.core.content.res.ResourcesCompat; | ||
| 14 | import androidx.lifecycle.MutableLiveData; | 17 | import androidx.lifecycle.MutableLiveData; |
| 15 | 18 | ||
| 16 | import com.bumptech.glide.Glide; | 19 | import com.bumptech.glide.Glide; |
| 17 | import com.chad.library.adapter.base.BaseQuickAdapter; | 20 | import com.chad.library.adapter.base.BaseQuickAdapter; |
| 18 | import com.chad.library.adapter.base.BaseViewHolder; | 21 | import com.chad.library.adapter.base.BaseViewHolder; |
| 19 | import com.hjx.parent.databinding.ActivityHomeworkSelectBinding; | 22 | import com.hjx.parent.databinding.ActivityHomeworkSelectBinding; |
| 20 | import com.hjx.parent.function.Function1; | 23 | import com.hjx.parent.function.Function1; |
| 21 | import com.hjx.parent.rx.BaseRxActivity; | 24 | import com.hjx.parent.rx.BaseRxActivity; |
| 22 | import com.prws.common.bean.Student; | 25 | import com.prws.common.bean.Student; |
| 23 | import com.prws.common.bean.homework.HomeWork; | 26 | import com.prws.common.bean.homework.HomeWork; |
| 24 | import com.prws.common.bean.homework.HomeworkList; | 27 | import com.prws.common.bean.homework.HomeworkList; |
| 25 | 28 | ||
| 26 | import java.util.ArrayList; | 29 | import java.util.ArrayList; |
| 27 | 30 | ||
| 28 | public class HomeworkSelectActivity extends BaseRxActivity<ActivityHomeworkSelectBinding> { | 31 | public class HomeworkSelectActivity extends BaseRxActivity<ActivityHomeworkSelectBinding> { |
| 29 | 32 | ||
| 30 | private Student student; | 33 | private Student student; |
| 31 | private HomeworkList mData; | 34 | private HomeworkList mData; |
| 32 | private ArrayList<HomeWork> mList; | 35 | private ArrayList<HomeWork> mList; |
| 33 | private Adapter mAdapter = new Adapter(); | 36 | private Adapter mAdapter = new Adapter(); |
| 34 | 37 | ||
| 35 | MutableLiveData<Integer> selectNum = new MutableLiveData<>(0); | 38 | MutableLiveData<Integer> selectNum = new MutableLiveData<>(0); |
| 36 | 39 | ||
| 37 | @SuppressLint("NotifyDataSetChanged") | 40 | @SuppressLint("NotifyDataSetChanged") |
| 38 | @SuppressWarnings("unchecked,ConstantConditions") | 41 | @SuppressWarnings("unchecked,ConstantConditions") |
| 39 | @Override | 42 | @Override |
| 40 | public void initView(Bundle savedInstanceState) { | 43 | public void initView(Bundle savedInstanceState) { |
| 41 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); | 44 | binding.toolbar.setNavigationOnClickListener(v -> onBackPressed()); |
| 42 | student = (Student) getIntent().getSerializableExtra("student"); | 45 | student = (Student) getIntent().getSerializableExtra("student"); |
| 43 | mData = (HomeworkList) getIntent().getSerializableExtra("data"); | 46 | mData = (HomeworkList) getIntent().getSerializableExtra("data"); |
| 44 | mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list"); | 47 | mList = (ArrayList<HomeWork>) getIntent().getSerializableExtra("list"); |
| 45 | 48 | ||
| 46 | mAdapter.setNewData(mList); | 49 | mAdapter.setNewData(mList); |
| 47 | binding.recyclerView.setAdapter(mAdapter); | 50 | binding.recyclerView.setAdapter(mAdapter); |
| 48 | 51 | ||
| 49 | mAdapter.selectCall = i -> selectNum.setValue(selectNum.getValue() + i); | 52 | mAdapter.selectCall = i -> selectNum.setValue(selectNum.getValue() + i); |
| 50 | selectNum.observe(this, i -> { | 53 | selectNum.observe(this, i -> { |
| 51 | binding.tvNumber.setText(String.valueOf(i)); | 54 | binding.tvNumber.setText(String.valueOf(i)); |
| 52 | if (i == 0) { | 55 | if (i == 0) { |
| 53 | binding.btnConfirm.setText("作业全对"); | 56 | binding.btnConfirm.setText("作业全对"); |
| 54 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78)); | 57 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF4ABC78)); |
| 55 | } else { | 58 | } else { |
| 56 | binding.btnConfirm.setText("下一步"); | 59 | binding.btnConfirm.setText("下一步"); |
| 57 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3)); | 60 | binding.btnConfirm.setBackgroundTintList(ColorStateList.valueOf(0xFF1C90F3)); |
| 58 | } | 61 | } |
| 59 | binding.chkAll.setChecked(i == mList.size() && i != 0); | 62 | binding.chkAll.setChecked(i == mList.size() && i != 0); |
| 60 | }); | 63 | }); |
| 61 | 64 | ||
| 62 | binding.chkAll.setOnClickListener(v -> { | 65 | binding.chkAll.setOnClickListener(v -> { |
| 63 | if (mList.size() == 0) return; | 66 | if (mList.size() == 0) return; |
| 64 | boolean b = binding.chkAll.isChecked(); | 67 | boolean b = binding.chkAll.isChecked(); |
| 65 | for (HomeWork item: mList) { | 68 | for (HomeWork item: mList) { |
| 66 | item.check = b; | 69 | item.check = b; |
| 67 | } | 70 | } |
| 68 | selectNum.setValue(b ? mList.size() : 0); | 71 | selectNum.setValue(b ? mList.size() : 0); |
| 69 | mAdapter.notifyDataSetChanged(); | 72 | mAdapter.notifyDataSetChanged(); |
| 70 | }); | 73 | }); |
| 71 | 74 | ||
| 72 | binding.btnConfirm.setOnClickListener(v -> { | 75 | binding.btnConfirm.setOnClickListener(v -> { |
| 73 | Intent intent = new Intent(this, HomeworkFeedbackActivity.class); | 76 | Intent intent = new Intent(this, HomeworkFeedbackActivity.class); |
| 74 | intent.putExtra("data", mData); | 77 | intent.putExtra("data", mData); |
| 75 | intent.putExtra("list", mList); | 78 | intent.putExtra("list", mList); |
| 76 | intent.putExtra("student", student); | 79 | intent.putExtra("student", student); |
| 77 | startActivityForResult(intent, 0xA01); | 80 | startActivityForResult(intent, 0xA01); |
| 78 | }); | 81 | }); |
| 79 | } | 82 | } |
| 80 | 83 | ||
| 81 | @Override | 84 | @Override |
| 82 | protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { | 85 | protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { |
| 83 | super.onActivityResult(requestCode, resultCode, data); | 86 | super.onActivityResult(requestCode, resultCode, data); |
| 84 | if (requestCode == 0xA01 && resultCode == RESULT_OK) { | 87 | if (requestCode == 0xA01 && resultCode == RESULT_OK) { |
| 85 | setResult(RESULT_OK); | 88 | setResult(RESULT_OK); |
| 86 | finish(); | 89 | finish(); |
| 87 | } | 90 | } |
| 88 | } | 91 | } |
| 89 | 92 | ||
| 90 | @Override | 93 | @Override |
| 91 | protected ActivityHomeworkSelectBinding getViewBinding() { | 94 | protected ActivityHomeworkSelectBinding getViewBinding() { |
| 92 | return ActivityHomeworkSelectBinding.inflate(getLayoutInflater()); | 95 | return ActivityHomeworkSelectBinding.inflate(getLayoutInflater()); |
| 93 | } | 96 | } |
| 94 | 97 | ||
| 95 | 98 | ||
| 96 | static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { | 99 | static class Adapter extends BaseQuickAdapter<HomeWork, BaseViewHolder> { |
| 97 | public Adapter() { | 100 | public Adapter() { |
| 98 | super(R.layout.item_homework_detail); | 101 | super(R.layout.item_homework_detail); |
| 99 | } | 102 | } |
| 100 | public Function1<Integer> selectCall; | 103 | public Function1<Integer> selectCall; |
| 101 | 104 | ||
| 102 | @SuppressLint("SetTextI18n") | 105 | @SuppressLint("SetTextI18n") |
| 103 | @Override | 106 | @Override |
| 104 | protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { | 107 | protected void convert(@NonNull BaseViewHolder holder, HomeWork homeWork) { |
| 105 | TextView tvNumber = holder.getView(R.id.tvNumber); | 108 | TextView tvNumber = holder.getView(R.id.tvNumber); |
| 106 | ImageView imageView = holder.getView(R.id.ivTopic); | 109 | ImageView imageView = holder.getView(R.id.ivTopic); |
| 107 | int number = getData().indexOf(homeWork) + 1; | 110 | int number = getData().indexOf(homeWork) + 1; |
| 108 | tvNumber.setText("第" + number + "题"); | 111 | tvNumber.setText("第" + number + "题"); |
| 109 | Glide.with(mContext).load(homeWork.url).into(imageView); | 112 | Glide.with(mContext).load(homeWork.url).into(imageView); |
| 110 | 113 | ||
| 114 | if (homeWork.check) { | ||
| 115 | holder.itemView.setForeground(getDrawable(R.drawable.border_radius_10_red)); | ||
| 116 | } else { | ||
| 117 | holder.itemView.setForeground(null); | ||
| 118 | } | ||
| 111 | CheckBox checkBox = holder.getView(R.id.checkbox); | 119 | CheckBox checkBox = holder.getView(R.id.checkbox); |
| 112 | checkBox.setVisibility(View.VISIBLE); | 120 | checkBox.setVisibility(View.VISIBLE); |
| 113 | checkBox.setOnCheckedChangeListener(null); | 121 | checkBox.setOnCheckedChangeListener(null); |
| 114 | checkBox.setChecked(homeWork.check); | 122 | checkBox.setChecked(homeWork.check); |
| 115 | 123 | ||
| 116 | holder.itemView.setOnClickListener(v -> checkBox.performClick()); | 124 | holder.itemView.setOnClickListener(v -> checkBox.performClick()); |
| 117 | checkBox.setOnCheckedChangeListener((v, b) -> { | 125 | checkBox.setOnCheckedChangeListener((v, b) -> { |
| 118 | homeWork.check = b; | 126 | homeWork.check = b; |
| 119 | if (selectCall != null) { | 127 | if (selectCall != null) { |
| 120 | selectCall.invoke(b ? 1 : -1); | 128 | selectCall.invoke(b ? 1 : -1); |
| 121 | } | 129 | } |
| 130 | if (homeWork.check) { | ||
| 131 | holder.itemView.setForeground(getDrawable(R.drawable.border_radius_10_red)); | ||
| 132 | } else { | ||
| 133 | holder.itemView.setForeground(null); | ||
| 134 | } | ||
| 122 | }); | 135 | }); |
| 123 | } | 136 | } |
| 137 | |||
| 138 | private Drawable getDrawable(@DrawableRes int res) { | ||
| 139 | return ResourcesCompat.getDrawable(mContext.getResources(), res, null); | ||
| 140 | } | ||
| 124 | } | 141 | } |
| 125 | } | 142 | } |
| 126 | 143 |
app/src/main/res/drawable/border_radius_10_red.xml
| File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | <shape xmlns:android="http://schemas.android.com/apk/res/android"> | ||
| 3 | |||
| 4 | <corners android:radius="10dp"/> | ||
| 5 | <stroke android:width="1dp" android:color="#FF4837"/> | ||
| 6 | |||
| 7 | </shape> |