package com.guang.app.adapter; import android.content.Context; import android.view.View; import android.widget.CompoundButton; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.guang.app.R; import com.guang.app.model.Score; import com.guang.app.util.CalcUtils; /** * 查询绩点 */ public class ScoreAdapter extends BaseQuickAdapter<Score, BaseViewHolder> { private Context mContext; public ScoreAdapter(Context context,int layoutResId) { super(layoutResId); mContext = context; } @Override protected void convert(final BaseViewHolder viewHolder, Score item) { viewHolder.setText(R.id.tv_course_name, item.getName()) .setText(R.id.tv_time, item.getTime()) .setText(R.id.tv_score, "" + item.getScore()) .setText(R.id.tv_credit, "" + item.getCredit()) .setText(R.id.tv_grade_point, CalcUtils.calcScore2Gpa(item.getScore())) .setVisible(R.id.score_expandable, false) .setVisible(R.id.score_item_separator, false); //下拉后的内容 viewHolder.setText(R.id.tv_classcode, "" + item.getClassCode()) .setText(R.id.tv_score_exp, "" + item.getExpScore()) .setText(R.id.tv_score_daily, "" + item.getDailyScore()) .setText(R.id.tv_score_paper, "" + item.getPaperScore()); //点击下拉按钮显示/隐藏额外信息,BaseRecyclerViewAdapterHelper框架也能实现,这里手动实现 https://github.com/CymChad/BaseRecyclerViewAdapterHelper/wiki/%E5%88%86%E7%BB%84%E7%9A%84%E4%BC%B8%E7%BC%A9%E6%A0%8F viewHolder.setOnCheckedChangeListener(R.id.score_btn_expandable_toggle, new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { viewHolder.setVisible(R.id.score_expandable, isChecked); viewHolder.setVisible(R.id.score_item_separator, isChecked); } }); //让整个内容条的点击都生效 显示/隐藏信息 ,提高体验 viewHolder.getView(R.id.layout_score_item_content).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (view.getId() != R.id.score_btn_expandable_toggle) { //虽然想防止多次点击(听声音) 但好像没什么效果,该条件要不要都行 viewHolder.getView(R.id.score_btn_expandable_toggle).performClick(); } } }); colorTextViewByScore(viewHolder, R.id.tv_score, item.getScore()); colorTextViewByScore(viewHolder, R.id.tv_score_daily, item.getDailyScore()); colorTextViewByScore(viewHolder, R.id.tv_score_paper, item.getPaperScore()); } //根据分数填充颜色,实验成绩不需要填充,暂没做 重修判断 private void colorTextViewByScore(BaseViewHolder viewHolder,int textViewId, int score) { if( score < 60) { viewHolder.setTextColor(textViewId, mContext.getResources().getColor(R.color.goal_item_failed_color)); // if(textViewId == R.id.tv_score){ //给标题加红的话,下拉上滑后就乱标红色了,框架的复用item有问题 // viewHolder.setTextColor(R.id.tv_course_name, mContext.getResources().getColor(R.color.goal_item_failed_color)); // }else{ // viewHolder.setTextColor(R.id.tv_course_name, mContext.getResources().getColor(R.color.normal_item_passed_text_color)); // } }else{ viewHolder.setTextColor(textViewId, mContext.getResources().getColor(R.color.goal_item_passed_color)); } } public void cleanData(){ super.mData.clear(); } }