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.HomeImpl import com.yidianling.home.event.IHomeEvent import com.yidianling.home.model.bean.HomeTestItemBean import kotlinx.android.synthetic.xlzx.home_test_view.view.* /** * @author <a href="https://www.jianshu.com/u/c1e5310dd724">xujian</a> * @描述: 心灵*电台模块 * @Copyright Copyright (c) 2019 * @Company 壹点灵 * @date 2019/02/13 */ class HomeTestView(private val mContext: Context, private var homeEvent: HomeImpl?) : LinearLayout(mContext) { private var cacheList : ArrayList<HomeTestItemBean> = ArrayList() init { initView() } private fun initView() { orientation = VERTICAL val params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) layoutParams = params View.inflate(mContext, R.layout.home_test_view, this) homeModuleIntelligentViewHomeCommonTitleView.setTitle("测试分析") homeModuleIntelligentViewHomeCommonTitleView.setMoreText("更多测试") homeModuleIntelligentViewHomeCommonTitleView.setTopMargin(-6) homeModuleIntelligentViewHomeCommonTitleView.setOnClickListener { homeEvent?.testMoreClick() } } fun initData(list: List<HomeTestItemBean>?) { //添加View if(list==null){ return } if (cacheList.size != list?.size){ cacheList.clear() cacheList.addAll(list!!) updateHomeTestItemViewNumber() } for (index in 0 until homeModuleIntelligentViewAddLayout.childCount){ val itemView = homeModuleIntelligentViewAddLayout.getChildAt(index) if (itemView is HomeTestItemView){ //第一个这种类型item,需要设置marginTop = 16dp,最后一个item需要设置marginBototm = 16dp if (index == 1) { itemView.setTopMargin() } if (index == homeModuleIntelligentViewAddLayout.childCount -1) { itemView.setBottomMargin() } itemView.updateData(list[index],index == list.size - 1) }else if (itemView is HomeTestTopItemView) { itemView.updateData(list[index]) } } } /** * 更新itemView的数量以适应新的数据集 */ private fun updateHomeTestItemViewNumber() { var childCountRecord = homeModuleIntelligentViewAddLayout.childCount while (cacheList.size > childCountRecord) { if (childCountRecord == 0) { homeModuleIntelligentViewAddLayout.addView(HomeTestTopItemView(mContext, homeEvent)) }else { homeModuleIntelligentViewAddLayout.addView(HomeTestItemView(mContext, homeEvent)) } childCountRecord++ } while (cacheList.size < childCountRecord && (homeModuleIntelligentViewAddLayout.getChildAt(childCountRecord -1 ) is HomeTestItemView || homeModuleIntelligentViewAddLayout.getChildAt(childCountRecord -1 ) is HomeTestTopItemView)) { homeModuleIntelligentViewAddLayout.removeViewAt(childCountRecord -1 ) childCountRecord-- } } }