HomeIntelligentView.kt 3.53 KB
Newer Older
1 2 3 4 5 6 7 8 9
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
import com.yidianling.home.event.IHomeBaseEvent
import com.yidianling.home.model.bean.HomeFMBean
konghaorui committed
10
import kotlinx.android.synthetic.xlzx.home_intelligent_view.view.*
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

/**
 * @author <a href="https://www.jianshu.com/u/c1e5310dd724">xujian</a>
 * @描述: 心灵*电台模块
 * @Copyright Copyright (c) 2019
 * @Company 壹点灵
 * @date 2019/02/13
 */
class HomeIntelligentView(private val mContext: Context, private var homeEvent: IHomeBaseEvent?) :
    LinearLayout(mContext) {

    private var cacheList: ArrayList<HomeFMBean.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
35
        View.inflate(mContext, R.layout.home_intelligent_view, this)
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
        homeModuleIntelligentViewHomeCommonTitleView.setTitle("心灵·电台")
        homeModuleIntelligentViewHomeCommonTitleView.setOnClickListener {
            homeEvent?.fmMoreClick()
        }
    }

    fun initData(list: List<HomeFMBean.ListBean>?) {
        //添加View
        if (list == null) {
            return
        }
        if (cacheList.size != list?.size) {
            cacheList.clear()
            cacheList.addAll(list)
            updateHomeIntelligentItemViewNumber()
        }
        //刷新数据
        for (index in 0 until homeModuleIntelligentViewAddLayout.childCount) {
            val itemView = homeModuleIntelligentViewAddLayout.getChildAt(index)
            if (itemView is HomeIntelligentItemView) {
                //第一个这种类型item,需要设置marginTop = 16dp,最后一个item需要设置marginBototm = 16dp
                if (index == 1) {
                    itemView.setTopMargin()
                } else if (index == homeModuleIntelligentViewAddLayout.childCount - 1) {
                    itemView.setBottomMargin()
                }
                itemView.updateData(list[index])
            } else if (itemView is HomeIntelligentTopItemView) {
                itemView.updateData(list[index])
            }
        }
    }

    /**
     * 更新itemView的数量以适应新的数据集
     */
    private fun updateHomeIntelligentItemViewNumber() {
        var childCountRecord = homeModuleIntelligentViewAddLayout.childCount
        while (cacheList.size > childCountRecord) {
            if (childCountRecord == 0) {
                homeModuleIntelligentViewAddLayout.addView(
                    HomeIntelligentTopItemView(
                        mContext,
                        homeEvent
                    )
                )
            } else {
                homeModuleIntelligentViewAddLayout.addView(
                    HomeIntelligentItemView(
                        mContext,
                        homeEvent
                    )
                )
            }
            childCountRecord++
        }
        while (cacheList.size < childCountRecord &&
            (homeModuleIntelligentViewAddLayout.getChildAt(childCountRecord - 1) is HomeIntelligentItemView
                    || homeModuleIntelligentViewAddLayout.getChildAt(childCountRecord - 1) is HomeIntelligentTopItemView)
        ) {
            homeModuleIntelligentViewAddLayout.removeViewAt(childCountRecord - 1)
            childCountRecord--
        }
    }
}