DataBindingSampleAdapter.kt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package com.example.zhpan.banner.adapter
  2. import android.view.View
  3. import android.view.ViewGroup
  4. import com.zhpan.bannerview.BaseBannerAdapter
  5. import com.example.zhpan.banner.net.BannerData
  6. import androidx.databinding.DataBindingUtil
  7. import com.example.zhpan.banner.R.layout
  8. import com.example.zhpan.banner.databinding.ItemSlideModelDataBindingBinding
  9. import com.zhpan.bannerview.BaseViewHolder
  10. import java.lang.NullPointerException
  11. /**
  12. * <pre>
  13. * Created by zhpan on 2020/4/5.
  14. * Description:使用DataBinding示例
  15. </pre> *
  16. */
  17. class DataBindingSampleAdapter : BaseBannerAdapter<BannerData?>() {
  18. override fun createViewHolder(
  19. parent: ViewGroup, itemView: View,
  20. viewType: Int
  21. ): BaseViewHolder<BannerData?> {
  22. val binding = DataBindingUtil.bind<ItemSlideModelDataBindingBinding>(itemView)
  23. ?: throw NullPointerException("binding is Null")
  24. return DataBindingViewHolder(binding)
  25. }
  26. override fun bindData(
  27. holder: BaseViewHolder<BannerData?>?,
  28. data: BannerData?,
  29. position: Int,
  30. pageSize: Int
  31. ) {
  32. if (holder is DataBindingViewHolder) {
  33. holder.binding.bannerData = data
  34. }
  35. }
  36. override fun getLayoutId(viewType: Int): Int {
  37. return layout.item_slide_model_data_binding
  38. }
  39. }
  40. internal class DataBindingViewHolder(var binding: ItemSlideModelDataBindingBinding) : BaseViewHolder<BannerData?>(binding.root)