package com.yidianling.home.ui.view import android.content.Context import android.graphics.Color 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.HomeAskBean import kotlinx.android.synthetic.xlzx.home_assuage_grief_view.view.* /** * @author <a href="https://www.jianshu.com/u/c1e5310dd724">xujian</a> * @描述: 解忧*问答模块 * @Copyright Copyright (c) 2019 * @Company 壹点灵 * @date 2019/02/13 */ class HomeAssuageGriefView(private val mContext: Context, private var homeEvent: IHomeBaseEvent?) : LinearLayout(mContext) { private var cacheList: ArrayList<HomeAskBean.DataBean> = 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_assuage_grief_view, this) homeModuleAssuageGriefViewHomeCommonTitleView.setTitle("人生答疑") homeModuleAssuageGriefViewHomeCommonTitleView.setTopMargin(-10) homeModuleAssuageGriefViewHomeCommonTitleView.setOnClickListener { homeEvent?.askMoreClick() } } fun initData(position: Int, list: List<HomeAskBean.DataBean>?) { //添加View if (list == null) { visibility = View.GONE return } if (cacheList.size != list?.size) { cacheList.clear() cacheList.addAll(list!!) updateHomeAssuageGriefItemViewNumber() } //刷新数据 for (index in 0..childCount) { val itemView = getChildAt(index) if (itemView != null && itemView is HomeAssuageGriefItemView) { itemView.updateData(list[index - 1], position, index - 1, index == childCount - 1) } } } /** * 更新itemView的数量以适应新的数据集 */ private fun updateHomeAssuageGriefItemViewNumber() { var childCountRecord = childCount - 1 //减1是因为第一个子View是标题View while (cacheList.size > childCountRecord) { addView(HomeAssuageGriefItemView(mContext, homeEvent)) childCountRecord++ } while (cacheList.size < childCountRecord && getChildAt(childCountRecord - 1) is HomeAssuageGriefItemView) { removeViewAt(childCountRecord - 1) childCountRecord-- } } }