package com.xkl.cdl.adapter import android.annotation.SuppressLint import android.content.res.ColorStateList import android.graphics.Color import android.view.View import android.view.ViewGroup import android.view.ViewTreeObserver import android.widget.TextView import androidx.core.content.ContextCompat import com.google.android.material.badge.BadgeDrawable import com.google.android.material.badge.BadgeUtils import com.google.android.material.imageview.ShapeableImageView import com.suliang.common.base.adapter.BaseAdapterViewHolder import com.suliang.common.base.adapter.BaseRVAdapterVM import com.suliang.common.databinding.ItemEmptyBinding import com.suliang.common.extension.click import com.suliang.common.util.os.ScreenUtil import com.xkl.cdl.R import com.xkl.cdl.data.AppConstants import com.xkl.cdl.data.bean.MemoCoursePack import com.xkl.cdl.data.bean.course.Course import com.xkl.cdl.data.binding.BindingAdapter import com.xkl.cdl.databinding.ItemMemoBinding import com.xkl.cdl.module.m_memo.MemoFragmentViewModel /** * author suliang * create 2022/5/30 16:56 * Describe: 备忘本适配器 */ class AdapterCoursePackWithMemo(viewModel : MemoFragmentViewModel) : BaseRVAdapterVM(viewModel) { // private val badgeDrawable : BadgeDrawable by lazy { // BadgeDrawable.create(context).apply { // badgeGravity = BadgeDrawable.TOP_END // maxCharacterCount = 3 // backgroundColor = ContextCompat.getColor(context, R.color.red_1) // badgeTextColor = ContextCompat.getColor(context, R.color.white) // horizontalOffset = -ScreenUtil.dp2px(6f).toInt() // verticalOffset = ScreenUtil.dp2px(6f).toInt() // } // } override fun onBindEmptyViewHolder(holder : BaseAdapterViewHolder) { (holder.binding as ItemEmptyBinding).run { //根据监听,显示具体的内容 vm.etSearchLiveData.value?.let { if (it.isNotEmpty()) { imgEmpty.setImageResource(R.mipmap.empty_nothing_search) tvContent.text = "没有搜索到任何内容" } else { imgEmpty.setImageResource(R.mipmap.empty_nothing) tvContent.text = "没有数据" } } } } override fun coverViewHolder(parent : ViewGroup, viewType : Int) : BaseAdapterViewHolder { return BaseAdapterViewHolder(inflateBinding(parent, R.layout.item_memo)) } override fun onBindVH(holder : BaseAdapterViewHolder, position : Int) { getItem(position).let { item -> (holder.binding as ItemMemoBinding).run { //图片 BindingAdapter.imageFilePath(imgCoursePackCover, item.coursePack.cover) //文字 tvCoursePackName.text = item.coursePack.coursePackName //图标与角标文字 item.coursePack.childrenCourses.forEachIndexed { index : Int, course : Course -> when (course.courseType) { AppConstants.COURSE_TYPE_ENGLISH_DISCERN -> setImageIcon(imgCourseIcon1,tvReviewNumber1,course.courseType,item.coursePackChildrenReview.getOrDefault(course.courseId,0)) AppConstants.COURSE_TYPE_ENGLISH_SPELL -> setImageIcon(imgCourseIcon2,tvReviewNumber2,course.courseType,item.coursePackChildrenReview.getOrDefault(course.courseId,0)) AppConstants.COURSE_TYPE_ENGLISH_VOICE -> setImageIcon(imgCourseIcon3,tvReviewNumber3,course.courseType,item.coursePackChildrenReview.getOrDefault(course.courseId,0)) //其他只有一个课程类型 else -> { setImageIcon(imgCourseIcon1,tvReviewNumber1,course.courseType,item.coursePackChildrenReview.getOrDefault(course.courseId,0)) imgCourseIcon2.visibility = View.INVISIBLE tvReviewNumber2.visibility = View.GONE imgCourseIcon3.visibility = View.INVISIBLE tvReviewNumber3.visibility = View.GONE imgCourseIcon1.visibility = View.VISIBLE } } } root.click { onItemClick.invoke(holder.itemView,position,item) } } } } /** * 设置图片 角标 与 背景,有复习number数据需要设置角标与背景,否则不需要 * @param imageView ShapeableImageView 图片 * @param courseType Int 课程类型 * @param reviewNumber Int 复习数量 */ @SuppressLint("UnsafeOptInUsageError") private fun setImageIcon(imageView : ShapeableImageView, tvReviewNumber: TextView, courseType : Int, reviewNumber : Int) { imageView.visibility = View.VISIBLE var color : Int = Color.parseColor("#00000000") when (reviewNumber) { //没有数据 0 -> { imageView.strokeColor = ColorStateList.valueOf(color) //设置图标: 灰色,没有背景 imageView.setImageResource(getCourseIcon(courseType)) imageView.imageTintList = ColorStateList.valueOf(Color.parseColor("#9A9EB3")) tvReviewNumber.visibility = View.GONE } //有复习数据 else -> { when (courseType) { AppConstants.COURSE_TYPE_ENGLISH_DISCERN -> color = Color.parseColor("#1A5082E6") AppConstants.COURSE_TYPE_ENGLISH_SPELL -> color = Color.parseColor("#1AF26255") AppConstants.COURSE_TYPE_ENGLISH_SPOKEN, AppConstants.COURSE_TYPE_ENGLISH_VOICE -> color = Color.parseColor( "#1A52CC52") AppConstants.COURSE_TYPE_CHINESE_COMPOSITION, AppConstants.COURSE_TYPE_ENGLISH_SOUNDMARK -> color = Color.parseColor( "#1A8757E6") AppConstants.COURSE_TYPE_CHINESE_PINYIN -> color = Color.parseColor("#1AEB54D8") AppConstants.COURSE_TYPE_CHINESE_LITERACY -> color = Color.parseColor("#1AFF8B52") } imageView.strokeColor = ColorStateList.valueOf(color) //设置图标:原图颜色 imageView.setImageResource(getCourseIcon(courseType)) //添加角标 tvReviewNumber.text = if (reviewNumber > 99 ) "99+" else "$reviewNumber" tvReviewNumber.visibility = View.VISIBLE } } } private fun getCourseIcon(courseType : Int) : Int { return when (courseType) { AppConstants.COURSE_TYPE_ENGLISH_DISCERN -> R.drawable.ic_course_discern AppConstants.COURSE_TYPE_ENGLISH_SPELL -> R.drawable.ic_course_spell AppConstants.COURSE_TYPE_ENGLISH_SPOKEN -> R.drawable.ic_course_spoken AppConstants.COURSE_TYPE_ENGLISH_VOICE -> R.drawable.ic_course_voice AppConstants.COURSE_TYPE_CHINESE_COMPOSITION -> R.drawable.ic_course_composition AppConstants.COURSE_TYPE_ENGLISH_SOUNDMARK -> R.drawable.ic_course_soundmark AppConstants.COURSE_TYPE_CHINESE_PINYIN -> R.drawable.ic_course_pinying AppConstants.COURSE_TYPE_CHINESE_LITERACY -> R.drawable.ic_course_literacy else -> 0 } } private fun getCourseIconOriginColor(courseType : Int) : Int { return when (courseType) { AppConstants.COURSE_TYPE_ENGLISH_DISCERN -> Color.parseColor("#5082E6") AppConstants.COURSE_TYPE_ENGLISH_SPELL -> Color.parseColor("#F26255") AppConstants.COURSE_TYPE_ENGLISH_SPOKEN, AppConstants.COURSE_TYPE_ENGLISH_VOICE -> Color.parseColor("#52CC52") AppConstants.COURSE_TYPE_CHINESE_COMPOSITION, AppConstants.COURSE_TYPE_ENGLISH_SOUNDMARK -> Color.parseColor( "#8757E6") AppConstants.COURSE_TYPE_CHINESE_PINYIN -> Color.parseColor("#EB54D8") AppConstants.COURSE_TYPE_CHINESE_LITERACY -> Color.parseColor("#FF8B52") else -> 0 } } }