日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android實現的RecyclerView適配器

瀏覽:153日期:2022-09-20 16:41:35

這個適配器我珍藏已久(近兩年), 不斷看到別人發適配器相關的文章, 但我總覺得沒我的好用, 所以今日拿出來分享(宣傳)一下, 歡迎各位指正不足.

源碼地址: GitHub

功能 無需繼承 Adapter, 無需判斷 item 類型. 支持頁頭和頁腳. 支持自動展示空數據界面. 通過 Kotlin 的 lambda 大量縮減代碼. 支持全局 Item 類型 支持 diff 刷新 使用

添加依賴

implementation 'com.dengzii.adapter:$latestVersion'

通過 lambda 快速使用, 這里就快速綁定了四種 item 的布局.

adapter.setEnableEmptyView(true, SuperAdapter.Empty())adapter.addViewHolderForType<SuperAdapter.Empty>(R.layout.item_empty){ onBindData { _, _ -> findView<View>(R.id.bt_refresh).setOnClickListener { // refresh your data } }}adapter.setHeader('This is header', R.layout.item_header) { onBindData { data, _ -> findView<TextView>(R.id.tv_title).text = data }}adapter.setFooter(listOf('This', 'is', 'footer'), R.layout.item_section) { onBindData { data, _ -> findView<TextView>(R.id.tv_title).text = data.joinToString(' ') }}adapter.addViewHolderForType<Header>(R.layout.item_header) { val title = findView<TextView>(R.id.tv_title) val content by lazyFindView<TextView>(R.id.tv_content) onBindData { data, _ -> title.text = data.title content.text = data.content }}

或者不使用 lambda

val adapter = SuperAdapter(listOf('Item 1', 'Item 2', 'Item 3'))adapter.addViewHolderForType(String::class.java, ItemViewHolder::class.java)recyclerView.layoutManager = LinearLayoutManager(this)recyclerView.adapter = adapterclass ItemViewHolder(parent: ViewGroup) : AbsViewHolder<String>(parent) { private lateinit var mTextView:TextView override fun onCreate(parent: ViewGroup) { mTextView = TextView(context) mTextView.layoutParams = getLayoutParam( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ) setContentView(mTextView) } override fun onBindData(data: String, position: Int) { mTextView.text = data }}

無需繼承 SuperAdapter, 但需要為每種 Item 實現并繼承繼承抽象類 AbsViewHolder, 并在改類中設置布局和綁定 View, 數據.

AbsViewHolder 代表一種 Item 類型, 其中泛型 T 為該 Item 對應的實體類

類 SuperAdapter 的作用

Adapter 構造器

public SuperAdapter(List<Object> data)

綁定 ViewHolder 到實體類型

public void addViewHolderForType(Class<?> type, Class<? extends AbsViewHolder> holder)

設置 Item 點擊事件

public void setOnItemClickListener(OnItemClickListener listener) public interface OnItemClickListener{ void onItemClick(View v, Object itemData, int position); }類 AbsViewHolder 的作用

每個 AbsViewHolder 表示一種 item 類型.

構造器, 必須重寫帶參數構造器, 否則無法使用, parent 與 Adapter#onCreateViewHolder 中 parent 一致

public AbsViewHolder(@NonNull ViewGroup parent)

創建 Item 時調用 onCreate 方法, 其中 parent 是該 item 的容器布局

public abstract void onCreate(@NonNull ViewGroup parent);

綁定數據

public abstract void onBindData(@NonNull T data, int position); Sample

設置 Adapter

var data:List<Any>...val adapter = SuperAdapter(data)// 綁定數據類到 ViewHolderadapter.addViewHolderForType(Item::class.java, ItemViewHolder::class.java)adapter.addViewHolderForType(Header::class.java, HeaderViewHolder::class.java)adapter.addViewHolderForType(Section::class.java, SectionViewHolder::class.java)adapter.setOnItemClickListener(object : SuperAdapter.OnItemClickListener { override fun onItemClick(v: View?, itemData: Any?, position: Int) { }})recyclerView.layoutManager = LinearLayoutManager(this)recyclerView.adapter = adapter

繼承 AbsViewHolder

class ItemViewHolder(parent: ViewGroup) : AbsViewHolder<Item>(parent) { private lateinit var mTvTitle: TextView private lateinit var mTvContent: TextView private lateinit var mIvImage:ImageView override fun onCreate(parent: ViewGroup) { setContentView(R.layout.item_item) mTvTitle = findViewById(R.id.tv_title) mTvContent = findViewById(R.id.tv_content) mIvImage = findViewById(R.id.iv_img) } override fun onBindData(data: Item, position: Int) { mTvTitle.text = data.title mTvContent.text = data.content mIvImage.setImageResource(data.img) }}

以上就是Android實現的RecyclerView適配器的詳細內容,更多關于RecyclerView 適配器的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美片第1页综合| 日本综合精品一区| 麻豆精品在线观看| 国产日韩1区| 水蜜桃久久夜色精品一区的特点| 777久久精品| 首页亚洲欧美制服丝腿| 玖玖玖国产精品| 女人天堂亚洲aⅴ在线观看| 激情婷婷久久| 香蕉国产精品| 91精品99| 亚洲欧美视频一区二区三区| 国产精品99免费看| 亚洲高清成人| 久久免费大视频| 欧美1区免费| 日韩一区精品视频| 91国内精品| 国产精品v一区二区三区| 国产精品1区| 综合日韩av| 欧美日韩国产免费观看视频| 99国内精品| 99国内精品| 欧美一区成人| 丁香婷婷久久| 成人羞羞视频播放网站| 欧美成人综合| 亚洲日韩中文字幕一区| 日本va欧美va欧美va精品| 国产精品qvod| 国产传媒在线观看| 亚洲欧洲一区| 日韩成人精品一区二区三区| 欧美综合精品| 亚洲黄色网址| 国产日韩专区| 日韩区欧美区| 免费日韩一区二区三区| 久久国产主播| 亚洲精品大全| 精品美女在线视频| 欧美在线亚洲| 国产精品丝袜在线播放| 桃色一区二区| 亚洲精品九九| 精品国产亚洲一区二区在线观看| 欧美日韩免费看片| 免费久久精品视频| 国产精品传媒麻豆hd| 久久亚洲精品中文字幕蜜潮电影| 奶水喷射视频一区| 国产精品视频一区二区三区四蜜臂| 中国字幕a在线看韩国电影| 国产成人精品一区二区三区视频| 婷婷中文字幕一区| 亚洲综合婷婷| 91午夜精品| 福利欧美精品在线| 狠狠色狠狠色综合日日tαg| 日韩av电影一区| 日韩精品欧美| 日本99精品| 一区二区三区四区日本视频| av不卡免费看| 美女视频黄 久久| 久久国产成人| 狂野欧美性猛交xxxx| 欧美日韩视频| 国产在线视频欧美一区| 亚洲制服欧美另类| 成人看片网站| 青青草精品视频| 婷婷综合五月| 色综合狠狠操| 欧美日一区二区三区在线观看国产免 | 国产成人精品一区二区三区视频 | 精品香蕉视频| 亚洲精品无吗| 激情五月综合| 国产99在线| 国产精品片aa在线观看| 日韩一区欧美二区| 国产中文一区| 久久一区亚洲| 日韩欧美美女在线观看| 91成人精品视频| 亚洲黄色免费看| 久久国产三级| 综合国产视频| 美女少妇全过程你懂的久久| 国产精品1区| 欧美亚洲国产日韩| 中文在线日韩| 亚洲在线免费| 伊人网在线播放| 久久精品日韩欧美| 国产精选一区| 久久国产尿小便嘘嘘| 男人的天堂久久精品| 桃色一区二区| sm久久捆绑调教精品一区| 国产精品尤物| 亚洲精品乱码| 亚洲深爱激情| 激情综合自拍| 999国产精品视频| 精品欧美日韩精品| 国产精品色在线网站| 国产亚洲久久| 日韩精品视频中文字幕| 亚洲精品一级二级三级| 亚洲日产国产精品| 亚洲三级av| 日韩三区四区| 蜜桃久久久久久久| 天堂成人国产精品一区| 国产日韩综合| 黄色亚洲在线| 欧美日韩国产综合网| 99视频在线精品国自产拍免费观看| 欧美亚洲激情| 亚洲精品电影| 午夜在线播放视频欧美| 每日更新成人在线视频| 性色一区二区| 亚洲三级视频| 日韩国产欧美视频| 国产亚洲精aa在线看| 久久精品超碰| 亚洲作爱视频| 亚洲日本三级| 日本亚洲最大的色成网站www | 日韩中文欧美在线| 视频一区免费在线观看| 亚洲丝袜美腿一区| 亚久久调教视频| 欧美日韩亚洲一区三区| 国产乱人伦丫前精品视频| 久久香蕉精品香蕉| 日韩在线精品| 婷婷亚洲五月| 亚洲精品成人一区| 国产精品亲子伦av一区二区三区| 国产福利亚洲| 国产精品99久久精品| 欧美男人天堂| 午夜欧美在线| 亚洲欧美在线综合| 欧美精品不卡| 日韩欧美一区二区三区在线视频 | 麻豆视频在线看| 久久精品亚洲人成影院| 亚洲激情黄色| 日本a级不卡| 精品视频91| 99久久夜色精品国产亚洲1000部| 成人av二区| 欧美午夜网站| 中文字幕在线官网| 久久精品二区亚洲w码 | 日韩精品欧美大片| 91亚洲国产高清| 国产精品巨作av| 国产精品欧美日韩一区| 免费人成在线不卡| 欧美日韩视频| 首页国产精品| 国产亚洲精aa在线看| 久久福利一区| 欧美日韩一区二区综合| 国产亚洲一级| 日韩国产欧美三级| 国产精品免费99久久久| 国产精品久久久久av电视剧| 香蕉久久国产| 国产一区二区三区天码| 国产一区成人| 精品91福利视频| 国产一级久久| 久久99久久久精品欧美| 在线日韩中文| 国产精品视频一区视频二区| 国内精品99| 美腿丝袜亚洲三区| 国产午夜久久| 国产一区二区三区四区二区| 中文精品视频| 国产精品videossex| 夜夜精品视频| 精品一区二区三区的国产在线观看| 欧美69视频| 久久精品一区二区国产| 日韩中文字幕av电影| 日韩不卡免费高清视频| 国产美女视频一区二区| 最新国产拍偷乱拍精品| 黑森林国产精品av| 7777精品|