android - Viewpager2 中的原生广告
问题描述
我有视频列表。我正在使用 Viewpager2 显示该视频。现在我想在每 5 个位置后显示原生广告。所以我为此做了一些代码。我创建了 2 个片段,其中一个片段具有视频播放器(其中显示所有视频),第二个片段具有 fb 原生广告。现在(这是我卡住的地方)我做的代码有两个问题,
问题 1.我在每 5 个位置之后添加了 VideoFragmentNative,所以每当添加该片段时,它占据 1 个位置,所以如果我有 20 个视频的列表,最后 4 个视频将不会显示,因为我添加了 VideoFragmentNative。那么如何解决呢?
问题 2.添加 VideoFragmentNative IF 广告未加载或失败(无填充或其他内容)后,我想删除该位置上的片段。那么如何去除呢?(这部分代码我没有这样做)我在stackoverflow上检查了删除片段,但在所有代码中它都是从位置和notifydatasetChanged()中删除的,但是我在适配器中添加了片段,那么如何从片段内部删除它?
这是我的适配器
package com.dashingdisco.app.downloader.viewpager
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.dashingdisco.app.downloader.VideoActivity
import com.dashingdisco.app.downloader.model.MediaFiles
import com.orhanobut.logger.Logger
class MyPagerAdapter(val activity: VideoActivity, val media: ArrayList<MediaFiles>, val whereFrom: Int) : FragmentStateAdapter(activity){
override fun getItemCount()= media.size
var first:Int=1
var last:Int=1
var firstTime=true
override fun createFragment(position: Int): Fragment {
Logger.e("createFragment-->$position")
var fragment:Fragment
if(firstTime){
firstTime=false
val medium = media[position]
val bundle = Bundle()
bundle.putSerializable(MEDIUM, medium)
bundle.putInt(WHEREFROM,whereFrom)
fragment = VideoFragment()
fragment.arguments = bundle
fragment.listener = activity
}
else{
if(position != 0 && position% 5 == 0){
first++
val medium = media[position]
val bundle = Bundle()
bundle.putSerializable(MEDIUM, medium)
bundle.putInt(WHEREFROM,whereFrom)
fragment = VideoFragmentNative()
fragment.arguments = bundle
}
else{
Logger.e("first-->$first\nlast-->$last")
var medium :MediaFiles
if(position != 0 && first>last){
last=first
val fPosition=position-1
medium = media[fPosition]
}
else{
medium = media[position]
}
val bundle = Bundle()
bundle.putSerializable(MEDIUM, medium)
bundle.putInt(WHEREFROM,whereFrom)
fragment = VideoFragment(viewPager)
fragment.arguments = bundle
fragment.listener = activity
}
}
return fragment
}
}
所以请帮我纠正这个错误,或者如果有任何其他方法可以在 Viewpager 中添加原生广告请分享如何添加它并在需要时动态删除它?如果您能提供一些代码,我将不胜感激
解决方案
推荐阅读
- pip - 我正在尝试使用 Python 3.9.0 安装 Kivy,但在我输入后它给了我一个错误: python -m pip install kivy
- amazon-web-services - AWS API Gateway HTTP API 自定义域,带有 VPC 链接到 ALB
- firebase - 没有创建 Firebase 应用“[默认]”调用初始化
- javascript - 使用 javascript/jquery 验证动态 php 表单
- linux - 使用 GCC 编译 C 失败
- css - 无法在菜单项悬停时显示边框
- python - 在 django 中批量创建具有相关对象的对象的有效方法是什么?
- ios - collectionView(_:cellForItemAt:) 中的闭包需要弱自我吗?
- javascript - 如何在javascript中选择二维矩阵的同心元素?
- css - React Apex Chart 工具栏菜单图标 z-index 过高。我怎样才能降低它?