使用 RecyclerView 中的“ViewType”来显示广告项,而不是将其视为列表中的常规项。在 RecyclerView 的 Adapter 中,可以为广告项和其他项设置不同的 ViewType。下面是一个代码示例:
// 定义 RecyclerView 的 ViewType
private val AD_VIEW_TYPE = 1
private val CONTENT_VIEW_TYPE = 2
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return if (viewType == AD_VIEW_TYPE) {
val adView = LayoutInflater.from(parent.context)
.inflate(R.layout.ad_item_layout, parent, false)
AdViewHolder(adView)
} else {
val contentView = LayoutInflater.from(parent.context)
.inflate(R.layout.content_item_layout, parent, false)
ContentViewHolder(contentView)
}
}
override fun getItemViewType(position: Int): Int {
return if (position % 5 == 0) {
AD_VIEW_TYPE
} else {
CONTENT_VIEW_TYPE
}
}
// 渲染不同的 ViewType
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
if (getItemViewType(position) == AD_VIEW_TYPE) {
// 渲染广告项
val adHolder = holder as AdViewHolder
adHolder.render()
} else {
// 渲染常规项
val contentHolder = holder as ContentViewHolder
val item = itemList[position]
contentHolder.render(item)
}
}
// AdViewHolder 和 ContentViewHolder 的实现
class AdViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun render() {
// 加载和渲染 AdMob 广告项
}
}
class ContentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun render(item: Item) {
// 渲染常规项
}
}