Нативная реклама в Viewpager2 - PullRequest
1 голос
/ 14 июля 2020

У меня есть список видео. Я показываю эти видео с помощью Viewpager2. Теперь я хочу отображать нативную рекламу после каждой 5-й позиции. Итак, я написал для этого код. Я создал 2 фрагмента, в одном из которых есть видеоплеер (в котором отображается все видео), а во втором - собственная реклама в fb. Теперь (вот где я застрял) у меня есть 2 проблемы с кодом, который я сделал,

Проблема 1. Я добавил VideoFragmentNative после каждой 5-й позиции, поэтому всякий раз, когда этот фрагмент добавлял его занимает 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, поделитесь, пожалуйста, Как добавить и удалить при необходимости динамически? Если вы можете предоставить код, я был бы признателен

...