YdlHomeAdapter.kt 8.87 KB
Newer Older
1 2 3 4
package com.yidianling.home.adapter

import android.content.Context
import android.support.v7.widget.RecyclerView
严久程 committed
5
import android.text.TextUtils
6 7 8
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
严久程 committed
9
import com.ydl.ydlcommon.data.PlatformDataManager
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
import com.yidianling.home.R
import com.yidianling.home.constract.YdlHomeViewHolderConstract
import com.yidianling.home.event.HomeImpl
import com.yidianling.home.model.bean.HomeAskBean
import com.yidianling.home.model.bean.HomeConfideBean
import com.yidianling.home.model.bean.HomeConsultBean
import com.yidianling.home.model.bean.HomePagerDataBean
import com.yidianling.home.ui.view.*

/**
 * @author <a href="https://www.jianshu.com/u/c1e5310dd724">xujian</a>
 * @描述: 壹点零首页适配器
 * @Copyright Copyright (c) 2019
 * @Company 壹点灵
 * @date 2019/02/13
 */
严久程 committed
26 27 28 29 30
class YdlHomeAdapter(
    private val mContext: Context,
    private var homeEvent: HomeImpl,
    private var list: ArrayList<HomePagerDataBean>
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
31 32 33 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 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 101 102 103 104 105 106

    private val mInflater: LayoutInflater = LayoutInflater.from(mContext)
    /**
     * 倾述item的position
     *
     */
    private var confidePosition = -1
    /**
     * 咨询条目 position
     */
    private var consultPosition = -1
    /**
     * 倾述模块中tab上次选中的下标
     */
    var confideSelectPosition = 0
    /**
     * 咨询模块中tab上次选中的下标
     */
    var consultSelectPosition = 0

    fun updateItems(list: MutableList<HomePagerDataBean>) {
        if (null == this.list || this.list!!.isEmpty()) {
            this.list = ArrayList()
        } else {
            this.list.clear()
        }
        this.list.addAll(list)
        //重置标记位
        confidePosition = -1
        consultPosition = -1
        notifyDataSetChanged()
    }

    /**
     * 更新倾诉模块数据
     */
    fun updateConfideData(data: HomeConfideBean, selectPosition: Int) {
        if (confidePosition == -1) {
            return
        }
        list[confidePosition].confideBean = data
        this.confideSelectPosition = selectPosition
        notifyItemChanged(confidePosition)
    }

    /**
     * 更新咨询模块数据
     */
    fun updateConsultData(data: HomeConsultBean, selectPosition: Int) {
        if (consultPosition == -1) {
            return
        }
        list[consultPosition].consultBean = data
        this.consultSelectPosition = selectPosition
        notifyItemChanged(consultPosition)
    }

    /**
     * 更新问答模块数据
     */
    fun updateAskData(data: HomeAskBean, position: Int) {
        list[position].askBean = data
        notifyItemChanged(position)
    }

    override fun getItemViewType(position: Int): Int {
        if (position < list.size) {
            return list[position].type!!
        } else {
            return YdlHomeViewHolderConstract.FOOTER_VIEW
        }
    }


    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder {
        when (viewType) {
ydl committed
107 108 109 110
            //顶部图片banner
            YdlHomeViewHolderConstract.HOME_IMAGE_BANNER -> {
                return HomeImageBannerViewHolder(HomeImageBannerView(mContext, homeEvent))
            }
111 112 113 114 115 116
            //顶部预约专家,即时倾诉,心理测试按钮模块
            YdlHomeViewHolderConstract.BUTTON_BANNER_VIEW -> {
                return HomeButtonBannerViewHolder(HomeButtonBannerView(mContext, homeEvent))
            }
            //倾诉*排解模块
            YdlHomeViewHolderConstract.CONFIDE_VIEW -> {
ydl committed
117
                return HomeEmptyViewHolder(HomeEmptyView(mContext))
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
            }
            //课程*成长模块
            YdlHomeViewHolderConstract.COURSE_VIEW -> {
                return HomeCourseViewHolder(HomeCourseView(mContext, homeEvent))
            }
            //解忧*问答模块
            YdlHomeViewHolderConstract.ASSUAGE_GRIEF_VIEW -> {
                return HomeAssuageGriefViewHolder(HomeAssuageGriefView(mContext, homeEvent))
            }
            //文章*阅读模块
            YdlHomeViewHolderConstract.ARTICLE_VIEW -> {
                return HomeArticleViewHolder(HomeArticleView(mContext, homeEvent))
            }
            //咨询模块
            YdlHomeViewHolderConstract.CONSULT_VIEW -> {
                return HomeConsultViewHolder(HomeConsultView(mContext, homeEvent))
            }
            //测试模块
            YdlHomeViewHolderConstract.TEST_VIEW -> {
                return HomeTestViewHolder(HomeTestView(mContext, homeEvent))
            }
            //底部提示语模块
            else -> {
konghaorui committed
141
                val view = mInflater.inflate(R.layout.home_footer_view, parent, false)
142 143 144 145 146 147 148
                return FooterViewViewHolder(view)
            }
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when (holder) {
ydl committed
149 150 151
            is HomeImageBannerViewHolder -> {
                holder.imageBannerView.initData(list[position])
            }
152 153
            //顶部预约专家,即时倾诉,心理课堂,心理测试按钮模块
            is HomeButtonBannerViewHolder -> {
严久程 committed
154 155 156
                holder.buttonBannerView.initData(
                    list[position].headerBean?.askCategoryData
                )
157 158
            }
            //倾诉*排解模块
ydl committed
159 160 161 162 163 164 165 166 167 168 169 170 171 172
//            is HomeConfideViewHolder -> {
//                if (!TextUtils.isEmpty(ffrom) && ffrom.endsWith("huawei")) {
//                    val parm = holder.itemView.layoutParams
//                    parm.height = 0
//                    holder.itemView.layoutParams = parm
//                } else {
//                    holder.confideViewView.setTitle(
//                        list[position].headerBean?.listenCategoryDate,
//                        confideSelectPosition
//                    )
//                    holder.confideViewView.setConfideExpertInfoView(list[position].confideBean?.body)
//                    confidePosition = position
//                }
//            }
173 174
            //课程*成长模块
            is HomeCourseViewHolder -> {
ydl committed
175 176
                holder.courseViewView.initData(list[position].courseBean?.list)

177 178 179
            }
            //解忧*问答模块
            is HomeAssuageGriefViewHolder -> {
ydl committed
180 181
                holder.assuageGriefViewView.initData(position, list[position].askBean?.data)

182 183 184 185 186 187 188
            }
            //文章*阅读模块
            is HomeArticleViewHolder -> {
                holder.articleViewView.initData(list[position].articleBean?.list)
            }
            //咨询模块
            is HomeConsultViewHolder -> {
ydl committed
189 190 191 192 193 194 195 196 197
                holder.consultView.setTitle(
                    list[position].headerBean?.consultCategoryData,
                    consultSelectPosition
                )
                holder.consultView.setConsultInfoView(
                    list[position].consultBean?.list,
                    list[position].headerBean?.consultCategoryData?.get(consultSelectPosition)
                )
                consultPosition = position
198 199 200 201 202 203 204 205 206 207 208
            }
            //测试模块
            is HomeTestViewHolder -> {
                holder.testView.initData(list[position].testListBean)
            }
        }
    }

    override fun getItemCount(): Int {
        return list.size
    }
严久程 committed
209

ydl committed
210 211 212
    inner class HomeImageBannerViewHolder(val imageBannerView: HomeImageBannerView) :
        RecyclerView.ViewHolder(imageBannerView)

213 214 215
    /**
     * 顶部预约专家,即时倾诉,心理测试按钮模块 ViewHolder
     */
严久程 committed
216 217
    inner class HomeButtonBannerViewHolder(val buttonBannerView: HomeButtonBannerView) :
        RecyclerView.ViewHolder(buttonBannerView)
218 219 220 221

    /**
     * 咨询模块 ViewHolder
     */
严久程 committed
222 223
    inner class HomeConsultViewHolder(val consultView: HomeConsultView) :
        RecyclerView.ViewHolder(consultView)
224 225 226 227

    /**
     * 倾诉*排解模块 ViewHolder
     */
严久程 committed
228 229
    inner class HomeConfideViewHolder(val confideViewView: HomeConfideView) :
        RecyclerView.ViewHolder(confideViewView)
230

ydl committed
231 232 233
    inner class HomeEmptyViewHolder(val emptyView: HomeEmptyView) :
        RecyclerView.ViewHolder(emptyView)

234 235 236
    /**
     * 课程*成长模块 ViewHolder
     */
严久程 committed
237 238
    inner class HomeCourseViewHolder(val courseViewView: HomeCourseView) :
        RecyclerView.ViewHolder(courseViewView)
239 240 241 242 243 244 245 246 247

    /**
     * 测试模块 ViewHolder
     */
    inner class HomeTestViewHolder(val testView: HomeTestView) : RecyclerView.ViewHolder(testView)

    /**
     * 解忧*问答模块 ViewHolder
     */
严久程 committed
248 249 250
    inner class HomeAssuageGriefViewHolder(val assuageGriefViewView: HomeAssuageGriefView) :
        RecyclerView.ViewHolder(assuageGriefViewView)

251 252 253
    /**
     * 文章*阅读模块 ViewHolder
     */
严久程 committed
254 255
    inner class HomeArticleViewHolder(val articleViewView: HomeArticleView) :
        RecyclerView.ViewHolder(articleViewView)
256 257 258 259 260 261

    /**
     * 底部提示语模块 ViewHolder
     */
    inner class FooterViewViewHolder(val footerView: View) : RecyclerView.ViewHolder(footerView)
}