多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > [置頂] 靈活且強大的RecyclerViewAdapter源碼分析

[置頂] 靈活且強大的RecyclerViewAdapter源碼分析

來源:程序員人生   發布時間:2016-08-24 08:30:16 閱讀次數:2524次

我的簡書地:http://www.jianshu.com/users/f958e66439f0/latest_articles

雖然工作可以不觸及編碼,但是本著對編碼的酷愛,因而在業余時間寫了1個關于RecyclerViewAdapter高度定制的開源庫。

相信大家RecyclerView應當不會陌生,大多數開發者應當都使用上它了,它也是google推薦替換ListView的控件,但是用過它的同學應當都知道它在某些方面并沒有ListView使用起來方便,需要我們額外的編寫代碼,今天就給大家介紹1個Github上面的1個開源庫,有了它讓你使用RecyclerView的時候,和ListView1樣的好用!它的名字叫做「BaseRecyclerViewAdapterHelper」,直接輸入「www.recyclerview.org」可以直接訪問。接下來不單單要給大家介紹它能做甚么,還要分析它的原理是如何實現。

節省Adapter大量代碼量

效果

如此的復雜布局!

代碼使用

賦值代碼不過10行!

原理分析

找到重復部份代碼,抽取到基類,非重復部份用抽象方法代替,具體讓子類實現。
我們可以從上面的代碼塊中看到,他繼承了BaseQuickAdapter,其實BaseQuickAdapter重寫了重復的代碼,根據java的繼承特性,兒子繼承爸爸的財產,所以兒子很輕松,做的事情很少。

BaseQuickAdapter

接下來我們再來看看關于賦值的BaseViewHolder

viewHolder
它里面做了1個緩存機制,避免了重復加載view,把經常使用的set方法全部寫好了,但是需要注意加載網絡圖片這1塊需要開發者自己加載,由于斟酌到實戰項目中都有自己的圖片加載庫,如果封裝在里面就耦合了,不能逼迫所有的開發者都使用框架內置的圖片加載庫,所以在使用的代碼塊里面,我們可以看到它是通過1個getView的方法拿到imageView對象再去通過自己的經常使用圖片加載框架去做相應的圖片加載。

添加點擊事件

RecyclerView沒有ItemClick方法,可以在上面提過的BaseQuickAdapter里面添加ItemClick,網上有很多寫法都是在onBindViewHolder
里面寫,功能是可以實現但是會致使頻繁創建,應當在onCreateViewHolder()
中每次為新建的 View 設置1次就好了。如果想添加長按事件,也同理。

代碼使用

原理分析

列表加載動畫

效果

列表加載動畫

代碼使用

原理分析

關于開啟動畫

首先判斷是不是開啟動畫,然后判斷是不是是自定義動畫還是用戶選擇的自帶動畫,然后對動畫的操作元素進行遍歷履行,履行時間為300毫秒,由于上面說了每次填充數據都會調用,所以如何不判斷的話,就會致使上下滑動每次都會重復調用動畫,動畫本身是會耗費性能的。

控制加載次數

只需要添加1個mLastPosition來存儲滑動過的位置,然后判斷滑動的位置是不是被滑動過,這樣就能夠避免每次都添加動畫了。不過為了滿足喜歡動畫多過于性能的開發者,如果你想要每次滑動都帶動畫可以設置isFirstOnly屬性便可,默許是不開啟的。

添加頭部尾部

效果

使用代碼

原理分析

實際上就定義多個不同類型的布局
1. 重寫getItemViewType()方法,根據需求規則給出不同的type值。
2. 在onBindViewHolder()里面根據不同holder的類型來賦予相對的數據
3. 如果有額外布局(如:頭部尾部)需要修改getItemCount()方法的返回數量

添加頭部和尾部(額外布局)

在上面的基礎之上再重寫getItemCount()在本來數據量上加上根據額外布局的數量,代碼以下

注意:如果是添加頭部
那就必須在原onBindViewHolder()
里面position-頭部數量,由于不減去的話,那末數據就會從第2條開始遍歷,所以要注意!

篇幅有限,今天就介紹到這里,除這些功能還有更多實用功能!項目延續更新中,覺得對自己有幫助的朋友可以star1下

最后奉上github源碼地址:https://github.com/CymChad/BaseRecyclerViewAdapterHelper

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: www.日本一区 | 中文字幕精品一区二区精品 | 波多野结衣在线观看一区二区 | a视频在线看 | 伊人久久伊人 | 免费伊人 | 国产高清一区二区三区 | videos欧美| 视频在线视频免费观看 | 日韩一区二区不卡中文字幕 | 中文字幕第一区 | 亚洲精品一区二区三区婷婷月 | v片在线观看 | 国产二区三区 | 久久精品九九亚洲精品天堂 | 夜夜狠狠 | 图片区亚洲色图 | 亚洲色域网 | 国产一区二区三区精品久久呦 | 欧美网色 | 性欧美18-19sex性高清播放 | 边吃奶边添下面就爽 | 欧美另类xxxx图片 | 波多久久夜色精品国产 | 男女视频在线免费观看 | 国产午夜精品不卡视频 | 欧美 日韩 亚洲 中文字幕 一区 | a4yy私人毛片| 日韩欧美国产一区二区三区四区 | 国产日产亚洲欧美综合另类 | 性xxxxfreexxxxx欧美吹潮 | 波多野结衣一二三区 | 中文字幕一区二区在线视频 | 香港一级a毛片在线播放 | 欧美区亚洲区 | 日韩最新视频一区二区三 | 日韩精品一区二区三区乱码 | 欧美精品a毛片免费观看 | 午夜宅男视频 | 亚洲精品视频免费看 | 欧洲亚洲综合一区二区三区 |