RecyclerView解析

RecyclerView作為最常用的控件... 唉彬犯,最近真心累脓魏,本來計劃是每天一篇的...奈何太忙颤殴,先占個坑吧..這篇文章主要介紹RecycerView常見的效果,原理效少二拐,慢慢等吧(??`ω′?)

一服鹅、復雜布局

  • 用GridLayoutManager.setSpanSizeLookup方法實現(xiàn).
    getSpanSize(int position) 返回值特點 :假設初始GridLayoutManager時構造中傳入值為4,那么我們返回4的一半即(2/4)時顯示兩個條目卓鹿,返回可以整除的值時顯示一個條目菱魔,除不斷時則返回默認顯示條目數(shù)量.

利用條目類型加載不同的ViewHolder實現(xiàn)條目內容的不同,位置及數(shù)量的顯示則由getSpanSize的返回值決定.

缺點:條目類型越多ViewHolder就越多吟孙,RecyclerView內部的判斷就會越庸腫澜倦,如何將這些庸腫的判斷剔除出來呢聚蝶?

如何改進?

二藻治、下拉加載

下拉加載不同數(shù)據(jù)碘勉,首先要做的就是判斷條目位置,如何判斷條目位置呢桩卵?

三验靡、添加Head和Foot

在RecyclerView里添加頭和腳不難,因為頭與腳也可以看做成一種條目類型雏节,所以加頭加腳說白了也只是增加條目類型而以胜嗓,除此外還有一個問題,那便是如果將布局插入指定位置钩乍,好在RecyclerView也有提供相應的方法實現(xiàn).

面向過程的寫法:

面向對象的寫法:
考慮到在日后的工作中可能經常會遇到這樣的需求辞州,以硬編碼的方式實現(xiàn)該功能,無疑耦合度過高寥粹,以后用到時都需要更改相應的方法变过,因此最好是將加頭加腳的操作抽取出來。這里用裝飾設計模式.

  • 裝飾設計模式:

四涝涤、拖拽

  • ItemTouchHelper.Callback

    • int getMovementFlags (RecyclerView , viewHolder):條目的移動方式.

    • onMove():某個條目的位置移動時調用媚狰,回調后應該將原來條目位置移動新位置.

    • onSwiped():某個條目滑動時調用,根據(jù)getMoementFlags方法的返回值決定是否調用阔拳,一但開始滑動則會調用clearView方法.

    • isLongPressDragEnabled():決定是否可以拖拽.

    • onSelectedChanged(ViewHolder, int):在每次View Holder的狀態(tài)變成拖拽 (ACTION_STATE_DRAG) 或者 滑動 (ACTION_STATE_SWIPE)的時候被調用崭孤。這是把你的item view變成激活狀態(tài)的最佳地點

    • clearView(RecyclerView, ViewHolder):在一個view被拖拽然后被放開的時候被調用,同時也會在滑動被取消或者完成ACTION_STATE_IDLE)的時候被調用衫生。這里是恢復item view idle狀態(tài)的典型地方裳瘪。

  • ItemTouchHelper

關系

五、仿ViewPage

現(xiàn)在用RecyclerView實現(xiàn)ViewPage的橫向滾動很簡單罪针,官方提供了第三方的支持庫,我們只需要將RecyclerView將由此庫就可實現(xiàn)類似ViewPage的效果黄伊,代碼如下:

new LinearSnapHelper().attachToRecyclerView(recyclerView);

效果圖之所以會顯示兩邊的條目泪酱,是因為我并沒有將條目的寬度設置為match_parent,如果你只想顯示單個條目只需要將寬度設置為match_parent即可还最,同理若想條目之間有間隔只需設置layout_margin屬性.

5.1墓阀、添加動畫效果

// ...

六、自定義ItemDecoration拓轻、ItemAnimator斯撮、LayoutManage

  • LayoutManage
    RecyclerView的緩存機制
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扶叉,隨后出現(xiàn)的幾起案子勿锅,更是在濱河造成了極大的恐慌帕膜,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溢十,死亡現(xiàn)場離奇詭異垮刹,居然都是意外死亡,警方通過查閱死者的電腦和手機张弛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門荒典,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吞鸭,你說我怎么就攤上這事寺董。” “怎么了刻剥?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵遮咖,是天一觀的道長。 經常有香客問我透敌,道長盯滚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任酗电,我火速辦了婚禮魄藕,結果婚禮上,老公的妹妹穿的比我還像新娘撵术。我一直安慰自己背率,他們只是感情好,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布嫩与。 她就那樣靜靜地躺著寝姿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪划滋。 梳的紋絲不亂的頭發(fā)上饵筑,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音处坪,去河邊找鬼根资。 笑死,一個胖子當著我的面吹牛同窘,可吹牛的內容都是我干的玄帕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼想邦,長吁一口氣:“原來是場噩夢啊……” “哼裤纹!你這毒婦竟也來了?” 一聲冷哼從身側響起丧没,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤鹰椒,失蹤者是張志新(化名)和其女友劉穎锡移,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吹零,經...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡罩抗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灿椅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片套蒂。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茫蛹,靈堂內的尸體忽然破棺而出操刀,到底是詐尸還是另有隱情,我是刑警寧澤婴洼,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布骨坑,位于F島的核電站,受9級特大地震影響柬采,放射性物質發(fā)生泄漏欢唾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一粉捻、第九天 我趴在偏房一處隱蔽的房頂上張望礁遣。 院中可真熱鬧,春花似錦肩刃、人聲如沸祟霍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沸呐。三九已至,卻和暖如春呢燥,著一層夾襖步出監(jiān)牢的瞬間崭添,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工叛氨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滥朱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓力试,卻偏偏與公主長得像,于是被迫代替她去往敵國和親排嫌。 傳聞我的和親對象是個殘疾皇子畸裳,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評論 25 707
  • RecyclerView 是伴隨著 android5.x 出來的控件,第一次提出應該是在14年的 Google I...
    Anonymous___閱讀 1,961評論 2 16
  • Man is what he believes.一個人相信什么淳地,他就是什么樣的人怖糊。 生活 在產品和開發(fā)同事面前復現(xiàn)...
    South_Lin閱讀 653評論 5 12
  • 經歷的多了帅容,經驗自然就豐富了。 失去的多了伍伤,就更加懂得珍惜了并徘。 得到的多了,就更加感激生活了扰魂。 從小麦乞,父母教育我說...
    曹珺閱讀 221評論 0 0
  • “楚之南有冥靈者,以五百歲為春劝评,五百歲為秋姐直;上古有大椿者,以八千歲為春蒋畜,八千歲為秋声畏。” 《大魚海棠》以十二年之約...
    周皮皮bibby閱讀 644評論 12 31