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

import android.content.Context
范玉宾 committed
4 5
import android.graphics.Color
import android.media.MediaPlayer
徐健 committed
6 7 8
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
严久程 committed
9
import android.widget.ImageView
YKai committed
10
import androidx.recyclerview.widget.RecyclerView
严久程 committed
11
import com.ydl.ydl_image.module.GlideApp
徐健 committed
12
import com.yidianling.home.R
konghaorui committed
13
import com.yidianling.home.constract.HomeViewConfig
14
import com.yidianling.home.event.HomeImpl
徐健 committed
15 16
import com.yidianling.home.model.bean.*
import com.yidianling.home.ui.view.*
范玉宾 committed
17
import kotlinx.android.synthetic.ydl.home_muse_view.view.*
徐健 committed
18

konghaorui committed
19

徐健 committed
20 21 22 23 24 25 26 27
/**
 * @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,
28
                     private var homeEvent: HomeImpl,
徐健 committed
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
                     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

63 64 65
    /*
    倾诉免费标识
    * */
霍志良 committed
66
    var listenFree :Boolean?=false
67

徐健 committed
68
    fun updateItems(list: MutableList<HomePagerDataBean>) {
霍志良 committed
69 70
        this.list.clear()

徐健 committed
71
        this.list.addAll(list)
霍志良 committed
72
        this.listenFree= list[0]?.headerBean?.listenFree!!
徐健 committed
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
        //重置标记位
        confidePosition = -1
        consultPosition = -1
        notifyDataSetChanged()
    }

    /**
     * 更新倾诉模块数据
     */
    fun updateConfideData(data: HomeConfideBean, selectPosition: Int) {
        if (confidePosition == -1) {
            return
        }
        list[confidePosition].confideBean = data
        this.confideSelectPosition = selectPosition
        notifyItemChanged(confidePosition)
霍志良 committed
89 90 91 92 93 94 95 96 97 98
    }
    /**
     * 更新倾诉免费标识
     */
    fun updateConfideFreeData(data: HomeHeaderBean?) {

        if (data!=null){
            list[1].headerBean = data
        }
        notifyItemChanged(1)
徐健 committed
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
    }

    /**
     * 更新咨询模块数据
     */
    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)
霍志良 committed
119

徐健 committed
120 121 122
    }

    override fun getItemViewType(position: Int): Int {
upwork.021 committed
123 124
        return if (position < list.size) {
            list[position].type!!
徐健 committed
125
        } else {
upwork.021 committed
126
            -1
徐健 committed
127 128 129 130
        }
    }


YKai committed
131
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
徐健 committed
132 133
        when (viewType) {
            //顶部ViewPager与分类模块
konghaorui committed
134 135 136 137 138 139 140 141 142 143
            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
144 145
            }
            //咨询模块
konghaorui committed
146 147
            HomeViewConfig.getOrder().consultIndex -> {
                return HomeConsultViewHolder(HomeConsultView(mContext, homeEvent),viewType)
徐健 committed
148 149
            }
            //顶部预约专家,即时倾诉,心理测试按钮模块
konghaorui committed
150
            HomeViewConfig.getOrder().buttonIndex -> {
151 152 153
                return HomeButtonBannerViewHolder(HomeButtonBannerView(mContext, homeEvent,
                    listenFree!!
                ),viewType)
徐健 committed
154 155
            }
            //倾诉*排解模块
konghaorui committed
156 157
            HomeViewConfig.getOrder().confideIndex -> {
                return HomeConfideViewHolder(HomeConfideView(mContext, homeEvent),viewType)
徐健 committed
158 159
            }
            //课程*成长模块
konghaorui committed
160 161
            HomeViewConfig.getOrder().courseIndex -> {
                return HomeCourseViewHolder(HomeCourseView(mContext, homeEvent),viewType)
徐健 committed
162 163
            }
            //解忧*问答模块
konghaorui committed
164 165
            HomeViewConfig.getOrder().dynamicIndex -> {
                return HomeAssuageGriefViewHolder(HomeAssuageGriefView(mContext, homeEvent),viewType)
徐健 committed
166 167
            }
            //测试模块
168
            HomeViewConfig.getOrder().testsIndex -> {
konghaorui committed
169
                return HomeTestViewHolder(HomeTestView(mContext, homeEvent),viewType)
徐健 committed
170 171
            }
            //心灵*电台模块
konghaorui committed
172 173
            HomeViewConfig.getOrder().fmIndex -> {
                return HomeIntelligentViewHolder(HomeIntelligentView(mContext, homeEvent),viewType)
徐健 committed
174 175
            }
            //文章*阅读模块
konghaorui committed
176 177
            HomeViewConfig.getOrder().articleIndex -> {
                return HomeArticleViewHolder(HomeArticleView(mContext, homeEvent),viewType)
徐健 committed
178 179
            }
            //壹点*冥想模块
konghaorui committed
180 181
            HomeViewConfig.getOrder().museIndex -> {
                return HomeMuseViewHolder(HomeMuseView(mContext, homeEvent),viewType)
徐健 committed
182 183 184
            }
            //底部提示语模块
            else -> {
konghaorui committed
185
                val view = mInflater.inflate(R.layout.home_footer_view, parent, false)
konghaorui committed
186
                return FooterViewViewHolder(view,viewType)
徐健 committed
187 188 189 190 191 192 193 194
            }
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when (holder) {
            //顶部ViewPager与分类模块
            is HomePagerBannerViewHolder -> {
konghaorui committed
195 196
                var tempIndex =  if (holder.viewType==-1) 0 else holder.viewType
                var headerBean = list[tempIndex].headerBean;
徐健 committed
197 198
                this.consultCategoryData = headerBean?.consultCategoryData
                this.listenCategoryDate = headerBean?.listenCategoryDate
konghaorui committed
199 200 201 202 203

                if (holder.viewType !=-1){
                    holder.pagerBannerView as HomePagerBannerView
                    holder.pagerBannerView.initData(headerBean)
                }
徐健 committed
204 205 206
            }
            //顶部预约专家,即时倾诉,心理课堂,心理测试按钮模块
            is HomeButtonBannerViewHolder -> {
霍志良 committed
207
                list[1].headerBean?.listenFree?.let { holder.buttonBannerView.setVisibilityFree(it) }
徐健 committed
208 209 210 211
            }
            //咨询模块
            is HomeConsultViewHolder -> {
                holder.consultView.setTitle(this.consultCategoryData, consultSelectPosition)
konghaorui committed
212
                holder.consultView.setConsultInfoView(list[holder.viewType].consultBean?.list,this.consultCategoryData?.get(consultSelectPosition))
徐健 committed
213 214 215 216 217
                consultPosition = position
            }
            //倾诉*排解模块
            is HomeConfideViewHolder -> {
                holder.confideViewView.setTitle(this.listenCategoryDate, confideSelectPosition)
konghaorui committed
218
                holder.confideViewView.setConfideExpertInfoView(list[holder.viewType].confideBean?.body)
徐健 committed
219 220 221 222
                confidePosition = position
            }
            //课程*成长模块
            is HomeCourseViewHolder -> {
konghaorui committed
223
                holder.courseViewView.initData(list[holder.viewType].courseBean?.list)
徐健 committed
224 225 226
            }
            //解忧*问答模块
            is HomeAssuageGriefViewHolder -> {
konghaorui committed
227
                holder.assuageGriefViewView.initData(position,list[holder.viewType].askBean?.data)
徐健 committed
228 229 230
            }
            //壹点*冥想模块
            is HomeMuseViewHolder -> {
范玉宾 committed
231 232 233 234 235 236 237 238 239

                holder.museViewView.video_view?.setOnInfoListener { mp, what, extra ->
                    if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START){
                        holder.museViewView.video_view?.setBackgroundColor(Color.TRANSPARENT)
                    }
                    true
                }
                holder.museViewView.video_view?.start()

240
                holder.museViewView.initData(list[holder.viewType].meditationBean)
徐健 committed
241 242 243
            }
            //心灵*电台模块
            is HomeIntelligentViewHolder -> {
konghaorui committed
244
                holder.intelligentViewView.initData(list[holder.viewType].fmBean?.list)
徐健 committed
245 246 247
            }
            //文章*阅读模块
            is HomeArticleViewHolder -> {
konghaorui committed
248
                holder.articleViewView.initData(list[holder.viewType].articleBean?.list)
徐健 committed
249 250 251
            }
            //测试模块
            is HomeTestViewHolder -> {
konghaorui committed
252
                holder.testView.initData(list[holder.viewType].testListBean)
徐健 committed
253 254 255 256 257 258 259 260 261 262 263
            }
        }
    }

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

    /**
     * 顶部ViewPager与分类模块 ViewHolder
     */
konghaorui committed
264
    inner class HomePagerBannerViewHolder(val pagerBannerView: View,val viewType:Int) : RecyclerView.ViewHolder(pagerBannerView)
徐健 committed
265 266 267 268

    /**
     * 顶部预约专家,即时倾诉,心理测试按钮模块 ViewHolder
     */
konghaorui committed
269
    inner class HomeButtonBannerViewHolder(val buttonBannerView: HomeButtonBannerView,val viewType:Int) : RecyclerView.ViewHolder(buttonBannerView)
徐健 committed
270 271 272 273

    /**
     * 咨询模块 ViewHolder
     */
konghaorui committed
274
    inner class HomeConsultViewHolder(val consultView: HomeConsultView,val viewType:Int) : RecyclerView.ViewHolder(consultView)
徐健 committed
275 276 277 278

    /**
     * 倾诉*排解模块 ViewHolder
     */
konghaorui committed
279
    inner class HomeConfideViewHolder(val confideViewView: HomeConfideView,val viewType:Int) : RecyclerView.ViewHolder(confideViewView)
徐健 committed
280 281 282 283

    /**
     * 课程*成长模块 ViewHolder
     */
konghaorui committed
284
    inner class HomeCourseViewHolder(val courseViewView: HomeCourseView,val viewType:Int) : RecyclerView.ViewHolder(courseViewView)
徐健 committed
285 286 287 288

    /**
     * 测试模块 ViewHolder
     */
konghaorui committed
289
    inner class HomeTestViewHolder(val testView: HomeTestView,val viewType:Int) : RecyclerView.ViewHolder(testView)
徐健 committed
290 291 292 293

    /**
     * 解忧*问答模块 ViewHolder
     */
konghaorui committed
294
    inner class HomeAssuageGriefViewHolder(val assuageGriefViewView: HomeAssuageGriefView,val viewType:Int) : RecyclerView.ViewHolder(assuageGriefViewView)
徐健 committed
295 296 297 298

    /**
     * 心灵*电台模块 ViewHolder
     */
konghaorui committed
299
    inner class HomeIntelligentViewHolder(val intelligentViewView: HomeIntelligentView,val viewType:Int) : RecyclerView.ViewHolder(intelligentViewView)
徐健 committed
300 301 302 303

    /**
     * 文章*阅读模块 ViewHolder
     */
konghaorui committed
304
    inner class HomeMuseViewHolder(val museViewView: HomeMuseView,val viewType:Int) : RecyclerView.ViewHolder(museViewView)
徐健 committed
305 306 307 308

    /**
     * 文章*阅读模块 ViewHolder
     */
konghaorui committed
309
    inner class HomeArticleViewHolder(val articleViewView: HomeArticleView,val viewType:Int) : RecyclerView.ViewHolder(articleViewView)
徐健 committed
310 311 312 313

    /**
     * 底部提示语模块 ViewHolder
     */
严久程 committed
314 315 316 317 318
    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);
319 320 321
            imageLogoView?.let {
                GlideApp.with(mContext).load("https://static.yidianling.com/banner/bottombanner@2x.png").into(it);
            }
严久程 committed
322 323
        }
    }
徐健 committed
324
}