Commit 81845301598ac0b3d3a960686d9928006cbc4905

Authored by shixianjie
1 parent b4bc21d212
Exists in master

选中题目时展示边框

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>