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

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

Android實現的RecyclerView適配器

瀏覽:155日期: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久久,三上悠亚国产精品一区二区三区
亚洲日本欧美| 久久精品国产在热久久| 麻豆91精品91久久久的内涵| 亚洲性视频在线| 亚洲综合小说| 欧美日韩va| 国产精品黄色| 成人av三级| 欧美另类综合| 日韩高清三区| 成人污污视频| 免费av一区| 亚洲精品日本| 国产精品成人3p一区二区三区| 九九九精品视频| 国内亚洲精品| 亚洲综合婷婷| 麻豆久久久久久久| 欧美一区久久久| japanese国产精品| 亚洲毛片网站| 麻豆91在线播放| 久久精品国语| 日韩美女精品| 在线看片福利| 亚洲午夜久久| 动漫av一区| 日韩一区二区久久| 国产亚洲一区| 91精品啪在线观看国产18| 亚洲欧洲日韩| 欧美好骚综合网| 丝袜美腿成人在线| 麻豆精品新av中文字幕| 神马午夜久久| 国产精品主播在线观看| 欧美亚洲国产激情| 国产欧美亚洲精品a| 久久精品123| 欧美一区91| 欧美+亚洲+精品+三区| 久久国产欧美日韩精品| 99久久婷婷| 国产精品欧美三级在线观看 | 亚洲精品亚洲人成在线观看| 精品国产中文字幕第一页| 亚洲制服少妇| 麻豆国产在线| 国产视频一区二区在线播放| 黄色日韩精品| 国际精品欧美精品| 亚洲精品日本| 国产精品7m凸凹视频分类| 久久精品国产成人一区二区三区| 亚洲视频电影在线| 九九在线精品| 91日韩在线| 日本欧美一区二区| 亚洲激情黄色| 中文字幕一区久| 欧美精品福利| 亚洲色诱最新| 亚洲天堂一区二区| 国产精品久久久久久模特| 免费在线观看成人| 91精品电影| 91tv亚洲精品香蕉国产一区| 午夜亚洲福利| 另类欧美日韩国产在线| 亚洲少妇在线| 欧美xxxx中国| 日本午夜精品| 国产精品一页| 久久精品成人| 青青草91久久久久久久久| 亚洲国产成人精品女人| 精品久久精品| 日本麻豆一区二区三区视频| 欧美资源在线| 亚洲特色特黄| 久久国产电影| 在线精品亚洲欧美日韩国产| 久久亚州av| 成人看片网站| 亚洲一二三区视频| 欧美日韩国产精品一区二区亚洲| av在线资源| 国产成人精品一区二区三区视频 | 久久三级视频| 在线天堂中文资源最新版| 卡一卡二国产精品| 国产毛片精品久久| 青草国产精品| 欧美日韩中文| 国产精品一线| 久久av日韩| 久久精品天堂| 国产传媒在线| 久久精品官网| 99国产精品| 亚洲一卡久久| 久久成人精品| 噜噜噜躁狠狠躁狠狠精品视频| 国产亚洲精品自拍| 麻豆精品91| 日韩一区免费| 国产精品超碰| 日韩一区欧美| 欧美成人综合| 国产视频一区三区| 亚洲三级在线| 欧美亚洲免费| 精品一区二区三区中文字幕视频| 精品国产乱码久久久久久樱花| 国产精品啊啊啊| 久草精品视频| 蜜臀久久99精品久久一区二区| 亚洲免费一区二区| 免费在线观看视频一区| 久久黄色影视| 日韩福利一区| 亚洲福利精品| 亚洲精选久久| 国产精品成人国产| 成人va天堂| 亚洲日韩中文字幕一区| 国产欧美一区二区色老头| 成人午夜亚洲| 免费成人网www| 日韩福利视频导航| 国产精品久久久久毛片大屁完整版| 日韩免费视频| 免费在线观看精品| 欧美激情福利| 精品一区免费| 欧美日韩国产一区二区在线观看| 国产精选在线| 亚洲一区成人| 麻豆免费精品视频| 一区二区自拍| 国产精品99久久免费| 亚洲成av人片一区二区密柚| 日韩欧美高清一区二区三区| 国产精品成人a在线观看| 99国产精品久久久久久久| 亚洲日本欧美| 日韩大片在线播放| 中文字幕av一区二区三区人 | av成人国产| 久久久国产精品网站| 日韩视频二区| 国产激情综合| 国产综合欧美| 国产图片一区| 亚洲免费播放| 国产成人免费av一区二区午夜| 婷婷综合在线| 国产精品一级| 亚洲欧美日韩国产一区| 国产一区二区三区国产精品| 婷婷综合福利| 免费久久久久久久久| 国产精品久久久网站| 亚洲在线一区| 色88888久久久久久影院| 国产日韩欧美一区二区三区在线观看| 欧美~级网站不卡| 麻豆精品视频在线观看| 一区二区亚洲视频| 美女亚洲一区| 97精品国产一区二区三区| 五月亚洲婷婷 | 老司机精品视频网| 亚洲欧美网站| 日韩大片在线| 精品资源在线| 欧美一区免费| 另类亚洲自拍| 日韩欧美午夜| 欧美91在线| 日韩免费精品| 免费日韩视频| 国产精品日本| 久久人人精品| 国产高清不卡| 精品国产一区二区三区性色av| 日韩动漫一区| 视频一区二区欧美| 日韩不卡视频在线观看| 国产一区二区三区网| 国产亚洲电影| 欧美亚洲一区二区三区| 国产视频一区三区| 日韩精品第一区| 久久免费视频66| 国产精品白浆| 国产精品传媒麻豆hd| 久久国产欧美日韩精品| 日韩精品免费一区二区夜夜嗨 | 日韩av二区|