123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- 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<MemoCoursePack, MemoFragmentViewModel>(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
- }
-
- }
-
- }
|