viewPager的adapter--FragmentInstancePagerAdapter

之前分享過幾個tab+viewPager的庫。。這種東西開發中特別常見。今天抽空補一個viewPager的adapter。用來搭配使用

創建FragmentInstancePagerAdapter,如下:

mport androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter/*** 為每個類型 Fragment 都只出現一個的 ViewPager 準備的 Adapter** @author* @date*/
class FragmentInstancePagerAdapter(fm: FragmentManager
) : FragmentStatePagerAdapter(fm) {private val list = mutableListOf<AdapterFragmentPager<*>>()inline fun <reified T : Fragment> append(title: CharSequence?,noinline creator: () -> T) {append(T::class.java, title, creator)}/*** 追加一個Fragment* @param clazz   Fragment類型的Class* @param title   標題* @param creator 創建該Fragment實例*/fun <T : Fragment> append(clazz: Class<T>,title: CharSequence?,creator: () -> T) {list.add(AdapterFragmentPager(clazz, title, creator))notifyDataSetChanged()}inline fun <reified T : Fragment> indexOfType(): Int {return indexOfType(T::class.java)}/*** 獲取指定類型Fragment的下標*/fun <T : Fragment> indexOfType(clazz: Class<T>): Int {return list.indexOfFirst { it.clazz == clazz }}inline fun <reified T : Fragment> removeByType() {removeByType(T::class.java)}/*** 移除指定類型的Fragment*/fun <T : Fragment> removeByType(clazz: Class<T>) {list.removeAll { it.clazz == clazz }notifyDataSetChanged()}override fun getItem(position: Int): Fragment {return list[position].creator()}override fun getCount(): Int {return list.size}override fun getPageTitle(position: Int): CharSequence? {return list[position].title}override fun getItemPosition(pageFragment: Any): Int {return list.indexOfFirst {it.clazz.isInstance(pageFragment)}}private class AdapterFragmentPager<T : Fragment>(val clazz: Class<T>,val title: CharSequence?,val creator: () -> T)
}

END

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209252.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209252.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209252.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI降重軟件,AI降重后原創高質量文章

在當今信息爆炸的時代&#xff0c;寫作與創作的重要性日益凸顯。隨著大量內容的涌現&#xff0c;文章降重成為了許多作者和內容創作者的一大問題。本文將專心分享該軟件的優勢&#xff0c;并為廣大用戶推薦幾款好用的AI降重軟件。 AI降重使用場景 AI降重技術利用機器學習算法和…

OpenCV圖像相似性比對算法

背景 在做圖像處理或者計算機視覺相關的項目的時候&#xff0c;很多時候需要我們對當前獲得的圖像和上一次的圖像做相似性比對&#xff0c;從而找出當前圖像針對上一次的圖像的差異性和變化點&#xff0c;這需要用到OpenCV中的一些圖像相似性和差異性的比對算法&#xff0c;在O…

使用LangSmith來快速學習LangChain

好風憑借力&#xff0c;送我上青云&#xff01; 什么是LangSmith LangSmith is a platform for building production-grade LLM applications. It lets you debug, test, evaluate, and monitor chains and intelligent agents built on any LLM framework and seamlessly int…

Python學習路線 - Python語言基礎入門 - 循環語句

Python學習路線 - Python語言基礎入門 - 循環語句 前言為什么學習循環語句 while循環的基礎語法while循環語句while循環注意點 while循環的基礎案例while循環的嵌套應用while循環的嵌套 while循環的嵌套案例補充知識 - print輸出不換行補充知識 - 制表符\t練習案例 - 打印九九乘…

創建dockerSwarm nfs掛載

創建dockerSwarm nfs掛載 nfs高可用部署(lsyncd兩主機雙向同步) nfs高可用部署(lsyncd三主機三向同步) 1. 通過 Volume 1.1 創建 Docker Volume 每個 swarm 節點均創建相同名稱的 Docker Volume&#xff08;名稱為 nfs120&#xff09; docker volume create --driver local …

算法:進制之前的轉換

1. X進制轉換成十進制-V1&#xff1a; /*** 笨辦法&#xff0c;從左往右開始* Tips&#xff1a;只支持正數** param num* param radix* return*/private static Integer xToTenV1(String num, Integer radix) {if (num.length() 0 || num.charAt(0) -) {throw new IllegalArg…

外貿找客戶軟件工具:BotMaster 18.5 Crack

BotMaster 拓展您的業務大師增加銷量Whatsapp營銷&#xff0c;使用 BotMaster 將您的業務提升到新的水平 - 最強大的 WhatsApp 營銷軟件&#xff0c;可促進銷售和發展您的業務。 BotMaster 是一款革命性的 WhatsApp 營銷工具&#xff0c;于 2022 年 1 月推出。這款功能強大的工…

10 大 Mac 數據恢復軟件深度評測

對于任何依賴計算機獲取重要文件&#xff08;無論是個人照片還是重要商業文檔&#xff09;的人來說&#xff0c;數據丟失可能是一場噩夢。值得慶幸的是&#xff0c;有多種專門為 Mac 用戶提供的數據恢復工具&#xff0c;可以幫助檢索丟失或意外刪除的文件。在本文中&#xff0c…

HNU計算機體系結構-實驗3:多cache一致性算法

文章目錄 實驗3 多cache一致性算法一、實驗目的二、實驗說明三 實驗內容1、cache一致性算法-監聽法模擬2、cache一致性算法-目錄法模擬 四、思考題五、實驗總結 實驗3 多cache一致性算法 一、實驗目的 熟悉cache一致性模擬器&#xff08;監聽法和目錄法&#xff09;的使用&am…

從零構建屬于自己的GPT系列4:模型訓練3(訓練過程解讀、序列填充函數、損失計算函數、評價函數、代碼逐行解讀)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 實戰系列 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在PyCharm中進行 本篇文章配套的代碼資源已經上傳 從零構建屬于自己的GPT系列1&#xff1a;數據預處理 從零構建屬于自己的GPT系列2&#xff1a;模型訓…

[力扣100] 10.滑動窗口的最大值

添加鏈接描述 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用單調隊列&#xff0c;把滑動窗口中最大的元素放在最頭quecollections.deque()nlen(nums)res[]# 初始化隊列,隊頭保存最大的數的下標&#xff0c;因為需要下標來…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支實現源碼分析(二)

一、前言 在本系列文章&#xff1a; Spring Security 6.x 系列&#xff08;4&#xff09;—— 基于過濾器鏈的源碼分析&#xff08;一&#xff09; 中著重分析了Spring Security在Spring Boot自動配置、 DefaultSecurityFilterChain和FilterChainProxy 的構造過程。 Spring …

Oauth2.0 認證

目錄 前言 1.介紹 2.Oauth2.0過程詳解 3.Oauth 整合到 Spring Boot 實踐 4.方法及配置詳解&#xff1a; 總結 前言 Oauth2.0 是非常流行的網絡授權表準&#xff0c;已經廣泛應用在全球范圍內&#xff0c;比較大的公司&#xff0c;如騰訊等都有大量的應用場景。 1.介紹 …

ARP欺騙攻擊

一.大概原理 ARP&#xff1a;address solution protocol 地址解析協議 ARP是一種基于局域網的TCP/IP協議&#xff0c;arp欺騙就是基于此協議的漏洞來達成我們的目的的&#xff0c;局域網中的數據傳輸并不是用ip地址傳輸的&#xff0c;而是靠mac地址。 我們如果出于某種目的想…

vue打包完成后出現空白頁原因及解決

vue打包完成后出現空白頁原因及解決 原因 資源路徑不對 路由模式&#xff1a;使用history&#xff0c; 此模式上線后易出現404 解決 1、vue.config.js中配置: publicPath: ./2、在后端要求做重定向 如在nginx中使用rewrite做重定向

【Fastadmin】利用 build_select 做一個樹狀下拉選擇框

1.效果展示 系統crud生成的下拉分類有些不是很好看&#xff0c;并且選擇困難&#xff0c;看不出級差&#xff0c;效果如下&#xff1a; 經過 build_select 加工后的效果,美觀好看&#xff0c;并添加上搜索功能: 2. 首先需要寫一個樹狀圖的數據格式 protected $datalist []; pu…

前沿科技與醫藥領域碰撞,《AI制藥方法與實踐》課程重磅上線

藥物發現是生物學、化學、醫學、藥學等基礎研究與工業轉化的重要窗口。近年來&#xff0c;AI技術的發展&#xff0c;為高投入、高失敗率的制藥行業帶來了全新機遇&#xff0c;或將徹底改變傳統制藥的研究范式。為了幫助更多人了解并掌握這一前沿技術&#xff0c;百度飛槳聯合清…

LeedCode刷題---滑動窗口問題

顧得泉&#xff1a;個人主頁 個人專欄&#xff1a;《Linux操作系統》 《C/C》 《LeedCode刷題》 鍵盤敲爛&#xff0c;年薪百萬&#xff01; 一、長度最小的子數組 題目鏈接&#xff1a;長度最小的子數組 題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。…

29 水仙花數

題目描述 所謂水仙花數&#xff0c;是指一個n位的正整數&#xff0c;其各位數字的n次方和等于該數本身。 例如153是水仙花數&#xff0c;153是一個3位數&#xff0c;并且1531^35^33^3. 輸入描述 第一行輸入一個整數n&#xff0c;表示一個n位的正整數。n在3到7之間&#xff0c;…

uniapp各種小程序分享 share - 主要流程 - 微信、抖音、快手、qq

參考 小程序環境 分享 | uni-app官網uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代碼,分享到微信朋友圈示例代碼,uni.share 在App端各社交平臺分享配置說明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…