ConfideHomeAdapter.kt 6.6 KB
Newer Older
洪国微 committed
1 2 3
package com.ydl.confide.home.adapter

import android.content.Context
YKai committed
4
import androidx.recyclerview.widget.RecyclerView
洪国微 committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 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
import android.view.View
import android.view.ViewGroup
import com.ydl.confide.R
import com.ydl.confide.home.bean.ConfideHomeDataBean
import com.ydl.confide.home.config.IConfideHomeConfig
import com.ydl.confide.home.contract.IConfideHomeContract
import com.ydl.confide.home.event.IConfideHomeEvent
import com.ydl.confide.home.widget.*

/**
 * @author yuanwai
 * @描述:倾诉首页列表适配器(因为section框架有问题,故先改为传统方式编写)
 * @Copyright Copyright (c) 2018
 * @Company 壹点灵
 * @date 2018/12/14
 */
class ConfideHomeAdapter(private val mContext: Context,
                         private var confideHomeEvent: IConfideHomeEvent,
                         private var confideHomeView: IConfideHomeContract.View) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    private var mListData: List<ConfideHomeDataBean>? = null

    private var mFilterViewHolder: FilterViewHolder? = null

    fun getFilterViewHolder(): FilterViewHolder? {
        return mFilterViewHolder
    }

    init {
        if (null == mListData) {
            mListData = ArrayList()
        }
    }

    override fun getItemViewType(position: Int): Int {
        if (null == mListData || mListData!!.isEmpty() || position >= mListData!!.size) {
            //当没数据 返回一个不存在的类型
            return 0
        }
        return mListData!![position].type!!
    }

    fun updataItems(list: List<ConfideHomeDataBean>) {
        if (null == mListData || mListData!!.isEmpty()) {
            mListData = ArrayList()
        } else {
            (mListData as ArrayList).clear()
        }
        (mListData as ArrayList).addAll(list)
    }

    fun addItems(list: List<ConfideHomeDataBean>) {
        if (null == mListData || mListData!!.isEmpty()) {
            mListData = ArrayList()
        }
        (mListData as ArrayList).addAll(list)
    }

    fun getList(): List<ConfideHomeDataBean>? {
        return mListData
    }

    fun getCount(): Int {
        if (null == mListData || mListData!!.isEmpty()) {
            return 0
        }
        return mListData!!.size
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        when (viewType) {
            //banner
            IConfideHomeConfig.TYPE_BANNER -> {
                return BannerViewHolder(ConfideHomeBannerView(parent.context, confideHomeEvent))
            }
            //最近倾诉
            IConfideHomeConfig.TYPE_RECENTLY_CONFIDED -> {
                return ConsultViewHolder(ConfideHomeRecentView(parent.context, confideHomeEvent))
            }
            //分类
            IConfideHomeConfig.TYPE_CATEGORY -> {
                return CategoryViewHolder(ConfideHomeCategoryView(parent.context, confideHomeEvent, confideHomeView))
            }
            //筛选模块
            IConfideHomeConfig.TYPE_RECOMMEND_FILTER -> {
                return FilterViewHolder(ConfideHomeFilterView(parent.context, confideHomeView))
            }
            //为你推荐
            IConfideHomeConfig.TYPE_RECOMMEND -> {
                return RecommendViewHolder(ConfideHomeRecommendView(confideHomeView, parent.context, confideHomeEvent))
            }
95 96 97 98
//            //听声寻人
//            IConfideHomeConfig.TYPE_SOUND -> {
////                return ConfideHomeListenAndFoundViewHolder(ConfideHomeListenAndFoundView(parent.context, confideHomeEvent))
//            }
洪国微 committed
99
            else -> {
100
                return EmptyViewHolder(View.inflate(parent.context, R.layout.confide_empty, null))
洪国微 committed
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
            }
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) =
            if (holder is BannerViewHolder && null != holder.bannerView) {
                //banner
                holder.bannerView!!.initData(mListData!![position])
            } else if (holder is CategoryViewHolder && null != holder.categoryView) {
                //分类
                holder.categoryView!!.initData(mListData!![position])
            } else if (holder is FilterViewHolder && null != holder.filterView) {
                mFilterViewHolder = holder
                //筛选模块
                holder.filterView.initData(mListData!![position])
            } else if (holder is ConfideHomeListenAndFoundViewHolder) {
                //听声寻人
118
//                holder.confideHomeListenAndFoundView!!.initData(mListData!![position])
洪国微 committed
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
            } else if (holder is ConsultViewHolder && null != holder.consultView) {
                //最近倾诉
                holder.consultView!!.initData(mListData!![position])
            } else if (holder is RecommendViewHolder && null != mListData!![position] && null != mListData!![position].body && !mListData!![position].body!!.isEmpty()) {
                //为你推荐
                holder.confideHomeRecommendView.initData(mListData!![position].body!![0], position, mListData!![position].recommendId)
            } else if (holder is EmptyViewHolder) {

            } else {

            }

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

    /**
     * banner viewHolder
     */
    inner class BannerViewHolder(itemView: ConfideHomeBannerView) : RecyclerView.ViewHolder(itemView) {
        var bannerView: ConfideHomeBannerView? = null

        init {
            bannerView = itemView
        }
    }

    /**
     * 分类测评 viewHolder
     */
    inner class CategoryViewHolder(itemView: ConfideHomeCategoryView) : RecyclerView.ViewHolder(itemView) {
        var categoryView: ConfideHomeCategoryView? = null

        init {
            categoryView = itemView
        }
    }

    /**
     * 筛选模块 viewHolder
     */
    inner class FilterViewHolder(var filterView: ConfideHomeFilterView) : RecyclerView.ViewHolder(filterView)

    /**
     * 听声寻人 viewHolder
     */
    inner class ConfideHomeListenAndFoundViewHolder(var confideHomeListenAndFoundView: ConfideHomeListenAndFoundView) : RecyclerView.ViewHolder(confideHomeListenAndFoundView)

    /**
     * 最近倾诉 viewHolder
     */
    inner class ConsultViewHolder(var consultView: ConfideHomeRecentView) : RecyclerView.ViewHolder(consultView)

    /**
     * 为你推荐 viewHolder
     */
    inner class RecommendViewHolder(var confideHomeRecommendView: ConfideHomeRecommendView) : RecyclerView.ViewHolder(confideHomeRecommendView)

    /**
     * 空ViewHolder
     */
    inner class EmptyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        var view: View? = null

        init {
            view = itemView
        }
    }
}