ArticleAdapter.kt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.example.zhpan.circleviewpager.adapter
  2. import android.content.Context
  3. import android.content.res.Resources
  4. import androidx.recyclerview.widget.RecyclerView
  5. import android.view.LayoutInflater
  6. import android.view.View
  7. import android.view.ViewGroup
  8. import android.widget.TextView
  9. import androidx.appcompat.app.AppCompatActivity
  10. import androidx.viewpager2.widget.ViewPager2
  11. import com.example.zhpan.circleviewpager.R
  12. import com.example.zhpan.circleviewpager.bean.ArticleWrapper
  13. import com.example.zhpan.circleviewpager.viewholder.ImageResourceViewHolder
  14. import com.zhpan.bannerview.BannerViewPager
  15. import com.zhpan.indicator.enums.IndicatorStyle
  16. import java.util.ArrayList
  17. class ArticleAdapter(val context: Context, data: List<ArticleWrapper.Article>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
  18. private val mList = ArrayList<ArticleWrapper.Article>()
  19. private val inflater: LayoutInflater
  20. init {
  21. this.mList.addAll(data)
  22. this.inflater = LayoutInflater.from(context)
  23. }
  24. override fun onCreateViewHolder(viewGroup: ViewGroup, itemType: Int): RecyclerView.ViewHolder {
  25. if (itemType == 1001) {
  26. return BannerItemViewHolder(inflater.inflate(R.layout.item_home_banner, viewGroup, false))
  27. }
  28. return ArticleViewHolder(inflater.inflate(R.layout.item_article, viewGroup, false))
  29. }
  30. override fun onBindViewHolder(holder: RecyclerView.ViewHolder, i: Int) {
  31. val article = mList[i]
  32. if (article.type == 1001 && holder is BannerItemViewHolder) {
  33. holder.bannerViewPager.setCanLoop(false)
  34. .setIndicatorStyle(IndicatorStyle.ROUND_RECT)
  35. .setIndicatorSliderGap(holder.resources.getDimensionPixelOffset(R.dimen.dp_4))
  36. .setIndicatorSliderWidth(holder.resources.getDimensionPixelOffset(R.dimen.dp_4), holder.resources.getDimensionPixelOffset(R.dimen.dp_10))
  37. .setIndicatorSliderColor(holder.resources.getColor(R.color.red_normal_color), holder.resources.getColor(R.color.red_checked_color))
  38. .setOrientation(ViewPager2.ORIENTATION_VERTICAL)
  39. .setInterval(2000)
  40. .setAdapter(ImageResourceAdapter(0)).create(article.pagers)
  41. } else if (holder is ArticleViewHolder) {
  42. holder.tvAuthor.text = article.author
  43. holder.tvTitle.text = article.title
  44. }
  45. }
  46. fun setData(list: List<ArticleWrapper.Article>) {
  47. mList.clear()
  48. mList.addAll(list)
  49. notifyDataSetChanged()
  50. }
  51. override fun getItemViewType(position: Int): Int {
  52. return mList[position].type
  53. }
  54. override fun getItemCount(): Int {
  55. return mList.size
  56. }
  57. inner class ArticleViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
  58. internal var tvTitle: TextView = itemView.findViewById(R.id.tv_title)
  59. internal var tvAuthor: TextView = itemView.findViewById(R.id.tv_auther)
  60. }
  61. inner class BannerItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
  62. var bannerViewPager: BannerViewPager<Int, ImageResourceViewHolder> = itemView.findViewById(R.id.banner_view3)
  63. var resources: Resources = itemView.context.resources
  64. init {
  65. if (context is AppCompatActivity)
  66. bannerViewPager.setLifecycleRegistry(context.lifecycle)
  67. }
  68. }
  69. }