package com.cr.adapter

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.cr.pages.CrNavigationFragment

/**
 * 操作系统：MAC系统
 * 创建者：王成
 * 创建日期：2023/6/15 16:00
 * 描述：页面适配器
 */
class CrPageAdapter@JvmOverloads constructor(
    activity: FragmentActivity
): FragmentStateAdapter(activity){
    private val mFragmentList: MutableList<CrNavigationFragment> = ArrayList()

    /**
     * 添加页面
     * @param fragment CrFragment
     */
    fun addFragment(fragment: CrNavigationFragment){
        mFragmentList.add(fragment)
        // todo: 2023/6/20 此方法必须执行 否则会导致由于利用缓存而出问题
        notifyDataSetChanged()
    }

    /**
     * 移除最有一个页面
     */
    fun removeLastFragment(){
        if(mFragmentList.size == 0) return
        mFragmentList.removeAt(mFragmentList.size -1)
        // todo: 2023/6/20 此方法必须执行 否则会导致由于利用缓存而出问题
        notifyDataSetChanged()
    }

    /**
     * 获取加载的页面
     * @return MutableList<Fragment>
     */
    fun getFragments(): MutableList<CrNavigationFragment> {
        return mFragmentList
    }

    // todo: 2023/4/11 页面数量
    override fun getItemCount(): Int {
        return mFragmentList.size
    }

    // todo: 2023/4/11 当前页面
    override fun createFragment(position: Int): Fragment {
        return mFragmentList[position]
    }

}