天天看點

Android LRecyclerView實作下拉重新整理,滑動到底部自動加載更多

很想給大家分享這個開源項目,但是由于工作的關系,沒有抽出空,但還是趁着工作間隙寫下了這篇部落格。

lrecyclerview是支援addheaderview、 addfooterview、下拉重新整理、分頁加載資料的recyclerview。

它對 recyclerview 控件進行了拓展,給recyclerview增加headerview、footerview,并且不需要對你的adapter做任何修改。

下拉重新整理、滑動到底部自動加載下頁資料;

可以友善添加header和footer;

頭部下拉樣式可以自定義;

具備item點選和長按事件。

網絡錯誤加載失敗點選footer重新請求資料;

可以動态為footerview賦予不同狀态(加載中、加載失敗、滑到最底等)。

如果我比别人看得遠些,那是因為我站在巨人們的肩上。 (牛頓)
Android LRecyclerView實作下拉重新整理,滑動到底部自動加載更多

注意:

mheaderandfooterrecyclerviewadapter = new headerandfooterrecyclerviewadapter(this, mdataadapter);

headerandfooterrecyclerviewadapter提供了一些實用的功能,使用者不用關心它的實作,隻需構造的時候把自己的mdataadapter以參數形式傳進去即可。

為了大家使用友善,将需要用的方法統一封裝到接口lscrolllistener中。

lscrolllistener實作了nrefresh()、onscrollup()、onscrolldown()、onbottom()、onscrolled五個事件,如下所示:

onrefresh()——recyclerview下拉重新整理事件;

onscrollup()——recyclerview向上滑動的監聽事件;

onscrolldown()——recyclerview向下滑動的監聽事件;

onbottom()——recyclerview滑動到底部的監聽事件;

onscrolldown()——recyclerview正在滾動的監聽事件;

從上面的lscrolllistener介紹中就可以看出,實作加載更多隻要在onbottom()接口中處理即可。

Android LRecyclerView實作下拉重新整理,滑動到底部自動加載更多

為了達到和listview的下拉重新整理效果,本項目沒有借助swiperefreshlayout控件,而是在自定義recyclerview頭部實作的重新整理效果。

設定加載樣式:

avloadingindicatorview庫有多少效果,lrecyclerview就支援多少下拉重新整理效果,當然你也可以自定義下拉效果。

效果圖:

Android LRecyclerView實作下拉重新整理,滑動到底部自動加載更多

下拉重新整理邏輯處理:

從上面的lscrolllistener介紹中就可以看出,實作下拉重新整理隻要在onrefresh()接口中處理即可。

加載資料時如果網絡異常或者斷網,lrecyclerview為你提供了重新加載的機制。

Android LRecyclerView實作下拉重新整理,滑動到底部自動加載更多

網絡異常出錯代碼處理如下:

上面的mfooterclick就是我們點選底部的footer時的邏輯處理事件,很顯然我們還是在這裡做重新請求資料操作。

在hongyang前輩的部落格中有下描述:

click and longclick 不過一個挺郁悶的地方就是,系統沒有提供clicklistener和longclicklistener。

不過我們也可以自己去添加,隻是會多了些代碼而已。

實作的方式比較多,你可以通過mrecyclerview.addonitemtouchlistener去監聽然後去判斷手勢, 當然你也可以通過adapter中自己去提供回調,這裡我們選擇後者,前者的方式,大家有興趣自己去實作。

hongyang大神選擇了後者,lrecyclerview早期選擇了前者,經過實踐總結,在adapter中實作點選事件會好點。

先看下怎麼使用:

原理就是實作viewholder.itemview的點選和長按事件。由于代碼過多就不貼出來了。

viewholder.itemview是recyclerview.adapter中本身就具有的,不用額外定義。

源碼如下:

注意布局檔案:

介紹完了lrecyclerview,似乎還少些什麼,對了,那就是adapter了。

為了友善大家使用,分享個封裝過的adapter。

listbaseadapter使用了泛型,簡單友善,消除了強制類型轉換。

使用如下:

listbaseadapter雖然功能不強大,但是使用很友善。

lrecyclerview使用友善簡單,無論你添加多少header和footer,你都不用擔心position的問題,除了友善還是友善。

Android LRecyclerView實作下拉重新整理,滑動到底部自動加載更多

如果大家使用過程中有任何問題,請留言,我會及時修正。

後記:如果後續再增加功能,請詳細看github上面的項目介紹,将不在部落格裡面更新。

繼續閱讀