BaseRecyclerViewAdapterHelper與ScrollView嵌套沖突解決

前言

Hello伪很,各位小伙伴們大家好啊戚啥,明天就是周五了,想想還有點(diǎn)小激動(dòng)是掰。不過話說回來虑鼎,激動(dòng)歸激動(dòng),文章還是要寫的键痛,今天要寫的文章是昨天碰到的一個(gè)坑炫彩,花了一下午的時(shí)間才搞定,所以記錄一下絮短,如果以后小伙伴們誰碰到了就不用再花那么久了江兢!好了,閑話不多說丁频,進(jìn)入今天的正題杉允,BaseRecyclerViewAdapterHelper!

什么是BaseRecyclerViewAdapterHelper

BaseRecyclerViewAdapterHelper是Github上一個(gè)開源項(xiàng)目,其實(shí)就是幫你把RecyclerView.Adapter做了一層封裝席里,但是你可以不要小看這一層封裝叔磷,他能做的事情絕對超乎你的想象,比如

  • 優(yōu)化Adapter代碼

和原始的adapter相對奖磁,減少70%的代碼量改基。

  • 添加Item事件

Item的點(diǎn)擊事件
Item的長按事件
Item子控件的點(diǎn)擊事件
Item子控件的長按事件

  • 添加列表加載動(dòng)畫

一行代碼輕松切換5種默認(rèn)動(dòng)畫。

  • 添加頭部咖为、尾部

一行代碼搞定秕狰,感覺又回到ListView時(shí)代。

  • 自動(dòng)加載

上拉加載無需監(jiān)聽滑動(dòng)事件,可自定義加載布局躁染,顯示異常提示鸣哀,自定義異常提示。同時(shí)支持下拉加載吞彤。

  • 分組布局

隨心定義分組頭部我衬。

  • 多布局

簡單配置、無需重寫額外方法。

  • 設(shè)置空布局

比Listview的setEmptyView還要好用低飒。

  • 添加拖拽许昨、滑動(dòng)刪除

開啟,監(jiān)聽即可褥赊,就是這么簡單糕档。

  • 樹形列表

比ExpandableListView還要強(qiáng)大,支持多級拌喉。

  • 自定義ViewHolder

支持自定義ViewHolder速那,讓開發(fā)者隨心所欲。

  • 擴(kuò)展框架

組合第三方框架尿背,輕松實(shí)現(xiàn)更多需求定制端仰。

至于具體的使用方案我這里就不一一列出了,想使用這個(gè)框架的童鞋可以去這個(gè)簡書地址看看田藐,作者官方的使用文檔http://www.reibang.com/p/b343fcff51b0

正題

前面也說了荔烧,寫這篇文章的目的呢,主要是為了解決一個(gè)沖突汽久,那就是當(dāng)你用ScrollView嵌套RecyclerView的時(shí)候鹤竭,同時(shí)你又開啟了BaseRecyclerViewAdapter的上拉加載更多setOnLoadMoreListener,那么問題就會出現(xiàn)了景醇,你會發(fā)現(xiàn)你的RecyclerView會不停的加載更多臀稚,根本停不下來,就像吃了炫邁一樣三痰,這里效果不太好演示吧寺,我就不截圖了,大家如果這樣使用的話一定會碰到散劫,那么是為什么呢稚机?

原因其實(shí)很簡單,因?yàn)槟阍赟crollView中嵌套RecyclerView的時(shí)候获搏,必定會手動(dòng)計(jì)算高度抒钱,不然就導(dǎo)致只會顯示一行的bug出現(xiàn),就是因?yàn)槟闶謩?dòng)計(jì)算了高度颜凯,從而導(dǎo)致BaseRecyclerViewAdapter的加載更多出現(xiàn)了問題,你每一次計(jì)算出所有條目的高度仗扬,BaseRecyclerViewAdapter就認(rèn)為你已經(jīng)準(zhǔn)備開始加載下一次數(shù)據(jù)了症概,從而形成無限加載更多的問題。

有些朋友就想了早芭,我看到BaseRecyclerViewAdapter文檔里面有一個(gè)方法叫disableLoadMoreIfNotFullPage()彼城,作用是不滿一屏的時(shí)候不會自動(dòng)加載,確實(shí),我剛開始也是以為調(diào)用這個(gè)方法就能解決無限加載更多的bug募壕,但是并沒有什么卵用调炬,反而你的加載更多失效了,這又是為什么呢舱馅?于是乎抱著鉆研的態(tài)度去看了看源碼缰泡,上截圖。


disableLoadMoreIfNotFullPage方法源碼

大家可以看到先是調(diào)用了checkNotNull()代嗤,其實(shí)就是檢查recyclerView是否為空棘钞,這個(gè)顯然不會為空,那么就要看下面的方法了干毅。


checkNotNull方法
disableLoadMoreIfNotFullPage方法

大家可以看到宜猜,代碼其實(shí)并不多,為什么加載更多會失效呢硝逢?大家看第一行代碼姨拥,setEnableLoadMore(false),一進(jìn)來就給你關(guān)掉了渠鸽,再看判斷


if判斷

findLastCompletelyVisibleItemPosition()的返回值永遠(yuǎn)是你拿到集合的最大索引值叫乌,+1剛好與后面的getItemCount()相等,所以setEnableLoadMore(true)永遠(yuǎn)都不會進(jìn)拱绑,所以加載更多失效综芥。

沖突解決

這上面巴拉巴拉說了一大堆,主要是為了告訴大家出現(xiàn)這個(gè)bug的原因猎拨。膀藐。。少俠红省,把刀放下额各,這就給你帶來解決思路。
我自己的解決思路吧恃,就是把整個(gè)界面只留RecyclerView虾啦,其他的作為RecyclerView的header,也就相當(dāng)于刪除了ScrollView痕寓,當(dāng)然這也要得益于BaseRecyclerViewAdapter的強(qiáng)大傲醉,添加頭部,只需要輕輕調(diào)用一下addHeaderView()即可呻率,雖然看起來很輕松就解決了硬毕,不過我自己卻是嘗試了很多種解法,都沒辦法礼仗,只有這樣才能達(dá)到效果吐咳,記錄一下逻悠。當(dāng)然,如果大家有更好的解法歡迎留言韭脊。

以上純屬于個(gè)人平時(shí)工作和學(xué)習(xí)的一些總結(jié)分享童谒,如果有什么錯(cuò)誤歡迎隨時(shí)指出,大家可以討論一起進(jìn)步沪羔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饥伊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子任内,更是在濱河造成了極大的恐慌撵渡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件死嗦,死亡現(xiàn)場離奇詭異趋距,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)越除,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門节腐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摘盆,你說我怎么就攤上這事翼雀。” “怎么了孩擂?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵狼渊,是天一觀的道長。 經(jīng)常有香客問我类垦,道長狈邑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任蚤认,我火速辦了婚禮米苹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砰琢。我一直安慰自己蘸嘶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布陪汽。 她就那樣靜靜地躺著训唱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挚冤。 梳的紋絲不亂的頭發(fā)上况增,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機(jī)與錄音你辣,去河邊找鬼巡通。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舍哄,可吹牛的內(nèi)容都是我干的宴凉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼表悬,長吁一口氣:“原來是場噩夢啊……” “哼弥锄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蟆沫,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤籽暇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后饭庞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戒悠,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年舟山,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绸狐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡累盗,死狀恐怖寒矿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情若债,我是刑警寧澤符相,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蠢琳,受9級特大地震影響啊终,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挪凑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一望艺、第九天 我趴在偏房一處隱蔽的房頂上張望文捶。 院中可真熱鬧,春花似錦、人聲如沸丘逸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽后雷。三九已至,卻和暖如春咬最,著一層夾襖步出監(jiān)牢的瞬間翎嫡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工永乌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惑申,地道東北人具伍。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像圈驼,于是被迫代替她去往敵國和親人芽。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • 又到了更新博文的時(shí)間了绩脆,最近在看一本很不錯(cuò)的心理學(xué)書籍萤厅,名字叫做 《拖延心理學(xué)》,封面長下面這樣子 書的內(nèi)容主要是...
    ec95b5891948閱讀 57,434評論 38 472
  • 1. 六月十七號靴迫,三十歲生日那天惕味,他請了一個(gè)星期的假。 老板倒是挺爽快地答應(yīng)了他玉锌,一來正值公司業(yè)務(wù)淡季名挥,二來正好給...
    紅綠文盲閱讀 584評論 4 4
  • 俗話說十個(gè)女人九個(gè)斑,女人和斑有著親密的關(guān)系芬沉,在三十歲以前也許你們不相信躺同,有人說我天生麗質(zhì),皮膚好丸逸,白蹋艺,不會長斑的...
  • 一周的時(shí)間很快就結(jié)束了,《自控力》也拆完了黄刚,效率真是高捎谨。 自控力是一種心想事成的能力-我想要 自控力其實(shí)是每個(gè)人都...
    G先生_海林閱讀 152評論 0 0