實現(xiàn)RecyclerView很簡單

實現(xiàn)RecyclerView很簡單

前言

在日常開發(fā)中對于列表的使用無處不在祝迂,以前我們主要是用ListView柬批、GridView等adapterView進行UI顯示荆隘,Google在2014年推出了RecyclerView之后讓我們實現(xiàn)列表UI更加的容易精偿、豐富且性能更強

RecyclerView的使用

RecyclerView與之前的ListView不同蜒谤,RecyclerView本身只負責View的繪制顯示,不負責數(shù)據(jù)的操作俏让,這個在我們實現(xiàn)RecyclerView.Adapter之后對其進行數(shù)據(jù)操作的時候就會知道楞遏,這也是他之所以比ListView性能更高的原因之一!

當我們對adapter數(shù)據(jù)源進行操作之后調(diào)用對應的notify方法(例如:notifyItemChanged)首昔,就會發(fā)現(xiàn)這時候寡喝,我們只是更新了UI其實沒有更新數(shù)據(jù)和ItemView的關(guān)聯(lián)關(guān)系。那是因為在RecyclerView中除了position之外還有一個叫做layoutPosition勒奇,看名字應該也知道预鬓,所以一般而言我們更新adapter數(shù)據(jù)之后一般還會調(diào)用notifyItemRangeChanged方法以刷新ItemView與數(shù)據(jù)的關(guān)聯(lián)關(guān)系!

RecyclerView使用步驟

在這里我們主要不是為了介紹RecyclerView的使用赊颠,如果還有不明白的可以去查一下格二,這種文章到處都是,一般實現(xiàn)一個列表的步驟如下:

  • 實現(xiàn)一個ViewHolder 繼承RecyclerView.ViewHolder
  • 實現(xiàn)一個adapter 繼承RecyclerView.Adapter
  • 得到一個RecyclerView對象
  • 給RecyclerView對象設(shè)置LayoutManager

思考

到了這里巨税,大家就會發(fā)現(xiàn)其實在日常開發(fā)中肯定不會是這么個步驟蟋定,因為太麻煩了粉臊,今天我?guī)淼木褪沁@么一個封裝之后的baserecycleradapter草添,其中加入了一些日常開發(fā)中需要的小功能

baserecycleradapter設(shè)計原理

以前我們實現(xiàn)ListView的適配器的時候如何進行優(yōu)化實現(xiàn)方案,我們會給每一個convertView設(shè)置一個ViewHolder的tag扼仲,如今RecyclerView要求我們必須實現(xiàn)這么一個ViewHolder远寸,與之前有所不同抄淑,那就是這個ViewHolder是View的一個載體,通過adapter中的onBindViewHolder方法進行處理業(yè)務數(shù)據(jù)邏輯驰后。

設(shè)計思路

接口回調(diào)是通過相信大家都不會陌生肆资,這個baserecyceradapter的實現(xiàn)思路就是借用java中的繼承關(guān)系默認實現(xiàn)一個baseViewHolder,從而讓平時開發(fā)中減少一個ViewHolder的實現(xiàn)步驟灶芝,同時借用一個BaseAdapter進行處理相關(guān)的幾個方法:

  • onBindViewHolder
  • onCreateViewHolder
    在開發(fā)的時候我們只需要繼承BaseAdapter就可以實現(xiàn)很多業(yè)務了郑原,達到我們之前ListView一樣的模式,同時為了便于老的項目將ListView改用成為RecyclerView夜涕,特意將暴露的initView方法中參數(shù)和ListView適配器中的getView一致以降低遷移成本

BaseAdapter的方法

BaseAdapter主張由適配器管理數(shù)據(jù)源犯犁,這樣一來就避免了數(shù)據(jù)源的操作異常,同時為了讓調(diào)用者不需要關(guān)心調(diào)用調(diào)用場景女器,BaseAdapter中允許在子線程中直接操作適配器的數(shù)據(jù)源方法:

方法名字 作用
clearAll() 清楚所有數(shù)據(jù)
addList 添加一個數(shù)據(jù)集合到數(shù)據(jù)源中
add 添加一個對象
containItem 判斷對象是否存在于數(shù)據(jù)集合中
getPosition 如果對象在集合中返回其position酸役,否則返回-1
deleteItem 從數(shù)據(jù)源中刪除對象
updateItem(int position) 這個方法指的是刷新數(shù)據(jù)源中的對象
updateItem 更新對象

以上查找類方法建議實現(xiàn)以下equals方法,否則可能不能起作用

其他

目前為了方便使用baserecycleradapter加入了幾個實現(xiàn)好了的適配器驾胆,具體可以查看 這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涣澡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子丧诺,更是在濱河造成了極大的恐慌入桂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锅必,死亡現(xiàn)場離奇詭異事格,居然都是意外死亡,警方通過查閱死者的電腦和手機搞隐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門驹愚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劣纲,你說我怎么就攤上這事逢捺。” “怎么了癞季?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵劫瞳,是天一觀的道長。 經(jīng)常有香客問我绷柒,道長志于,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任废睦,我火速辦了婚禮伺绽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己奈应,他們只是感情好澜掩,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杖挣,像睡著了一般肩榕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惩妇,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天株汉,我揣著相機與錄音,去河邊找鬼歌殃。 笑死郎逃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的挺份。 我是一名探鬼主播褒翰,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匀泊!你這毒婦竟也來了优训?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤各聘,失蹤者是張志新(化名)和其女友劉穎揣非,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躲因,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡早敬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了大脉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搞监。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖镰矿,靈堂內(nèi)的尸體忽然破棺而出琐驴,到底是詐尸還是另有隱情,我是刑警寧澤秤标,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布绝淡,位于F島的核電站,受9級特大地震影響苍姜,放射性物質(zhì)發(fā)生泄漏牢酵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一衙猪、第九天 我趴在偏房一處隱蔽的房頂上張望馍乙。 院中可真熱鬧玉罐,春花似錦、人聲如沸潘拨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铁追。三九已至,卻和暖如春茫船,著一層夾襖步出監(jiān)牢的瞬間琅束,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工算谈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涩禀,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓然眼,卻偏偏與公主長得像艾船,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子高每,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容