com.youth.banner:banner:2.1.0
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:banner_indicator_normal_color="#D8D8D8"
app:banner_indicator_selected_color="#333333"
app:banner_indicator_normal_width="8dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="20dp" />
class HomeBannerAdapter(mData: List<List<String>>) :
BannerAdapter<List<String>, HomeBannerAdapter.BannerViewHolder>(mData) {
private var onClickListener: OnClickListener? = null
fun interface OnClickListener {
fun onClick(position: Int)
}
fun setOnClickListener(onClickListener: OnClickListener) {
this.onClickListener = onClickListener
}
override fun onCreateHolder(parent: ViewGroup?, viewType: Int): BannerViewHolder {
val inflater = LayoutInflater.from(parent?.context)
val binding = ItemBannerBinding.inflate(inflater, parent, false)
return BannerViewHolder(binding)
}
override fun onBindView(
holder: BannerViewHolder?,
data: List<String>?,
position: Int,
size: Int
) {
data?.let {
holder?.binding?.let { binding ->
binding.root.setOnClickListener { onClickListener?.onClick(position) }
binding.tvGameType.text = it[0].replace("类型:", "")
Glide.with(binding.root.context).load(it[1]).into(binding.img1)
Glide.with(binding.root.context).load(it[2]).into(binding.img2)
Glide.with(binding.root.context).load(it[3]).into(binding.img3)
}
}
}
class BannerViewHolder(val binding: ItemBannerBinding) : RecyclerView.ViewHolder(binding.root)
}
private fun initBanner() {
binding.banner.addBannerLifecycleObserver(this)
val adapter = HomeBannerAdapter(model.bannerDate)
adapter.setOnClickListener {
startActivity(
Intent(
requireActivity(),
GameTypeDetailActivity::class.java
).putExtra("game_catalog",model.bannerDate[it][0])
)
}
binding.banner.adapter = adapter
binding.banner.setIndicator(CircleIndicator(requireContext()))
binding.banner.setBannerGalleryEffect(80, 10,1.0f)
}