HomeCourseView.kt 2.37 KB
Newer Older
徐健 committed
1 2 3 4 5 6 7
package com.yidianling.home.ui.view

import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import com.yidianling.home.R
8
import com.yidianling.home.constract.HomeViewConfig
9
import com.yidianling.home.event.IHomeBaseEvent
徐健 committed
10
import com.yidianling.home.model.bean.HomeCourseBean
konghaorui committed
11
import kotlinx.android.synthetic.ydl.home_course_view.view.*
徐健 committed
12 13 14 15 16 17 18 19

/**
 * @author <a href="https://www.jianshu.com/u/c1e5310dd724">xujian</a>
 * @描述: 课程*成长模块
 * @Copyright Copyright (c) 2019
 * @Company 壹点灵
 * @date 2019/02/13
 */
20
class HomeCourseView(private val mContext: Context, private var homeEvent: IHomeBaseEvent?): LinearLayout(mContext) {
徐健 committed
21 22 23 24 25 26 27 28 29 30 31

    private var cacheList : ArrayList<HomeCourseBean.ListBean> = ArrayList()

    init {
        initView()
    }

    private fun initView() {
        orientation = VERTICAL
        val params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        layoutParams = params
konghaorui committed
32
        View.inflate(mContext, R.layout.home_course_view, this)
33
        homeModuleCourseViewHomeCommonTitleView.setTitle(HomeViewConfig.getOrder().courseTitle)
徐健 committed
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
        homeModuleCourseViewHomeCommonTitleView.setOnClickListener {
            homeEvent?.courseMreClick()
        }
    }

    fun initData(list: List<HomeCourseBean.ListBean>?) {
        //添加View
        if (list==null){
            return
        }
        if (cacheList.size != list?.size){
            cacheList.clear()
            cacheList.addAll(list!!)
            updateHomeCourseItemViewNumber()
        }
        //刷新数据
        for (index in 0 until childCount){
            val itemView = getChildAt(index)
            if (itemView is HomeCourseItemView){
                itemView.updateData(list[index - 1])
            }
        }
    }

    /**
     * 更新itemView的数量以适应新的数据集
     */
    private fun updateHomeCourseItemViewNumber() {
        var childCountRecord = childCount -1 //减1是因为第一个子View是标题View
        while (cacheList.size > childCountRecord) {
            addView(HomeCourseItemView(mContext, homeEvent))
            childCountRecord++
        }
        while (cacheList.size < childCountRecord && getChildAt(childCountRecord) is HomeCourseItemView) {
            removeViewAt(childCountRecord)
            childCountRecord--
        }
    }
}