YdlHomeAdapter.kt 10.6 KB
Newer Older
徐健 committed
1 2 3
package com.yidianling.home.adapter

import android.content.Context
konghaorui committed
4
import android.graphics.Color
徐健 committed
5 6 7 8
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
严久程 committed
9 10
import android.widget.ImageView
import com.ydl.ydl_image.module.GlideApp
徐健 committed
11
import com.yidianling.home.R
konghaorui committed
12
import com.yidianling.home.constract.HomeViewConfig
13
import com.yidianling.home.event.HomeImpl
徐健 committed
14 15 16
import com.yidianling.home.model.bean.*
import com.yidianling.home.ui.view.*

konghaorui committed
17

徐健 committed
18 19 20 21 22 23 24 25
/**
 * @author <a href="https://www.jianshu.com/u/c1e5310dd724">xujian</a>
 * @描述: 壹点零首页适配器
 * @Copyright Copyright (c) 2019
 * @Company 壹点灵
 * @date 2019/02/13
 */
class YdlHomeAdapter(private val mContext: Context,
26
                     private var homeEvent: HomeImpl,
徐健 committed
27 28 29 30 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 107 108 109
                     private var list: ArrayList<HomePagerDataBean>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    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

    /**
     * 倾诉分类 缓存
     */
    var listenCategoryDate: List<HomeHeaderBean.ListenCategoryDateBean>? = null

    /**
     * 咨询分类 缓存
     */
    var consultCategoryData: List<HomeHeaderBean.ConsultCategoryDateBean>? = null

    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 {
konghaorui committed
110
            return -1
徐健 committed
111 112 113 114 115 116 117
        }
    }


    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder {
        when (viewType) {
            //顶部ViewPager与分类模块
konghaorui committed
118 119 120 121 122 123 124 125 126 127
            HomeViewConfig.getOrder().bannerIndex -> {
                if (viewType == -1){
                    //空布局
                    val view = View(mContext)
                    val layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,1)
                    view.layoutParams = layoutParams
                    view.visibility = View.GONE
                    return HomePagerBannerViewHolder(view,viewType)
                }
                return HomePagerBannerViewHolder(HomePagerBannerView(mContext, homeEvent),viewType)
徐健 committed
128 129
            }
            //咨询模块
konghaorui committed
130 131
            HomeViewConfig.getOrder().consultIndex -> {
                return HomeConsultViewHolder(HomeConsultView(mContext, homeEvent),viewType)
徐健 committed
132 133
            }
            //顶部预约专家,即时倾诉,心理测试按钮模块
konghaorui committed
134 135
            HomeViewConfig.getOrder().buttonIndex -> {
                return HomeButtonBannerViewHolder(HomeButtonBannerView(mContext, homeEvent),viewType)
徐健 committed
136 137
            }
            //倾诉*排解模块
konghaorui committed
138 139
            HomeViewConfig.getOrder().confideIndex -> {
                return HomeConfideViewHolder(HomeConfideView(mContext, homeEvent),viewType)
徐健 committed
140 141
            }
            //课程*成长模块
konghaorui committed
142 143
            HomeViewConfig.getOrder().courseIndex -> {
                return HomeCourseViewHolder(HomeCourseView(mContext, homeEvent),viewType)
徐健 committed
144 145
            }
            //解忧*问答模块
konghaorui committed
146 147
            HomeViewConfig.getOrder().dynamicIndex -> {
                return HomeAssuageGriefViewHolder(HomeAssuageGriefView(mContext, homeEvent),viewType)
徐健 committed
148 149
            }
            //测试模块
150
            HomeViewConfig.getOrder().testsIndex -> {
konghaorui committed
151
                return HomeTestViewHolder(HomeTestView(mContext, homeEvent),viewType)
徐健 committed
152 153
            }
            //心灵*电台模块
konghaorui committed
154 155
            HomeViewConfig.getOrder().fmIndex -> {
                return HomeIntelligentViewHolder(HomeIntelligentView(mContext, homeEvent),viewType)
徐健 committed
156 157
            }
            //文章*阅读模块
konghaorui committed
158 159
            HomeViewConfig.getOrder().articleIndex -> {
                return HomeArticleViewHolder(HomeArticleView(mContext, homeEvent),viewType)
徐健 committed
160 161
            }
            //壹点*冥想模块
konghaorui committed
162 163
            HomeViewConfig.getOrder().museIndex -> {
                return HomeMuseViewHolder(HomeMuseView(mContext, homeEvent),viewType)
徐健 committed
164 165 166
            }
            //底部提示语模块
            else -> {
konghaorui committed
167
                val view = mInflater.inflate(R.layout.home_footer_view, parent, false)
konghaorui committed
168
                return FooterViewViewHolder(view,viewType)
徐健 committed
169 170 171 172 173 174 175 176
            }
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when (holder) {
            //顶部ViewPager与分类模块
            is HomePagerBannerViewHolder -> {
konghaorui committed
177 178
                var tempIndex =  if (holder.viewType==-1) 0 else holder.viewType
                var headerBean = list[tempIndex].headerBean;
徐健 committed
179 180
                this.consultCategoryData = headerBean?.consultCategoryData
                this.listenCategoryDate = headerBean?.listenCategoryDate
konghaorui committed
181 182 183 184 185

                if (holder.viewType !=-1){
                    holder.pagerBannerView as HomePagerBannerView
                    holder.pagerBannerView.initData(headerBean)
                }
徐健 committed
186 187 188 189 190 191 192
            }
            //顶部预约专家,即时倾诉,心理课堂,心理测试按钮模块
            is HomeButtonBannerViewHolder -> {
            }
            //咨询模块
            is HomeConsultViewHolder -> {
                holder.consultView.setTitle(this.consultCategoryData, consultSelectPosition)
konghaorui committed
193
                holder.consultView.setConsultInfoView(list[holder.viewType].consultBean?.list,this.consultCategoryData?.get(consultSelectPosition))
徐健 committed
194 195 196 197 198
                consultPosition = position
            }
            //倾诉*排解模块
            is HomeConfideViewHolder -> {
                holder.confideViewView.setTitle(this.listenCategoryDate, confideSelectPosition)
konghaorui committed
199
                holder.confideViewView.setConfideExpertInfoView(list[holder.viewType].confideBean?.body)
徐健 committed
200 201 202 203
                confidePosition = position
            }
            //课程*成长模块
            is HomeCourseViewHolder -> {
konghaorui committed
204
                holder.courseViewView.initData(list[holder.viewType].courseBean?.list)
徐健 committed
205 206 207
            }
            //解忧*问答模块
            is HomeAssuageGriefViewHolder -> {
konghaorui committed
208
                holder.assuageGriefViewView.initData(position,list[holder.viewType].askBean?.data)
徐健 committed
209 210 211
            }
            //壹点*冥想模块
            is HomeMuseViewHolder -> {
konghaorui committed
212
                holder.museViewView.initData(list[holder.viewType].museBean)
徐健 committed
213 214 215
            }
            //心灵*电台模块
            is HomeIntelligentViewHolder -> {
konghaorui committed
216
                holder.intelligentViewView.initData(list[holder.viewType].fmBean?.list)
徐健 committed
217 218 219
            }
            //文章*阅读模块
            is HomeArticleViewHolder -> {
konghaorui committed
220
                holder.articleViewView.initData(list[holder.viewType].articleBean?.list)
徐健 committed
221 222 223
            }
            //测试模块
            is HomeTestViewHolder -> {
konghaorui committed
224
                holder.testView.initData(list[holder.viewType].testListBean)
徐健 committed
225 226 227 228 229 230 231 232 233 234 235
            }
        }
    }

    override fun getItemCount(): Int {
        return list.size
    }

    /**
     * 顶部ViewPager与分类模块 ViewHolder
     */
konghaorui committed
236
    inner class HomePagerBannerViewHolder(val pagerBannerView: View,val viewType:Int) : RecyclerView.ViewHolder(pagerBannerView)
徐健 committed
237 238 239 240

    /**
     * 顶部预约专家,即时倾诉,心理测试按钮模块 ViewHolder
     */
konghaorui committed
241
    inner class HomeButtonBannerViewHolder(val buttonBannerView: HomeButtonBannerView,val viewType:Int) : RecyclerView.ViewHolder(buttonBannerView)
徐健 committed
242 243 244 245

    /**
     * 咨询模块 ViewHolder
     */
konghaorui committed
246
    inner class HomeConsultViewHolder(val consultView: HomeConsultView,val viewType:Int) : RecyclerView.ViewHolder(consultView)
徐健 committed
247 248 249 250

    /**
     * 倾诉*排解模块 ViewHolder
     */
konghaorui committed
251
    inner class HomeConfideViewHolder(val confideViewView: HomeConfideView,val viewType:Int) : RecyclerView.ViewHolder(confideViewView)
徐健 committed
252 253 254 255

    /**
     * 课程*成长模块 ViewHolder
     */
konghaorui committed
256
    inner class HomeCourseViewHolder(val courseViewView: HomeCourseView,val viewType:Int) : RecyclerView.ViewHolder(courseViewView)
徐健 committed
257 258 259 260

    /**
     * 测试模块 ViewHolder
     */
konghaorui committed
261
    inner class HomeTestViewHolder(val testView: HomeTestView,val viewType:Int) : RecyclerView.ViewHolder(testView)
徐健 committed
262 263 264 265

    /**
     * 解忧*问答模块 ViewHolder
     */
konghaorui committed
266
    inner class HomeAssuageGriefViewHolder(val assuageGriefViewView: HomeAssuageGriefView,val viewType:Int) : RecyclerView.ViewHolder(assuageGriefViewView)
徐健 committed
267 268 269 270

    /**
     * 心灵*电台模块 ViewHolder
     */
konghaorui committed
271
    inner class HomeIntelligentViewHolder(val intelligentViewView: HomeIntelligentView,val viewType:Int) : RecyclerView.ViewHolder(intelligentViewView)
徐健 committed
272 273 274 275

    /**
     * 文章*阅读模块 ViewHolder
     */
konghaorui committed
276
    inner class HomeMuseViewHolder(val museViewView: HomeMuseView,val viewType:Int) : RecyclerView.ViewHolder(museViewView)
徐健 committed
277 278 279 280

    /**
     * 文章*阅读模块 ViewHolder
     */
konghaorui committed
281
    inner class HomeArticleViewHolder(val articleViewView: HomeArticleView,val viewType:Int) : RecyclerView.ViewHolder(articleViewView)
徐健 committed
282 283 284 285

    /**
     * 底部提示语模块 ViewHolder
     */
严久程 committed
286 287 288 289 290 291 292 293
    inner class FooterViewViewHolder(val footerView: View,val viewType:Int) : RecyclerView.ViewHolder(footerView){
        var imageLogoView:ImageView?=null

        init {
            imageLogoView=footerView.findViewById(R.id.iv_logo_view);
            GlideApp.with(mContext).load("https://static.yidianling.com/banner/bottombanner@2x.png").into(imageLogoView);
        }
    }
徐健 committed
294
}