本文為ListView的實現(xiàn)方式,
想要RecyclerView的實現(xiàn)方式,
可以克隆Bamboy合集的Git:
https://github.com/Bamboy120315/bamboy.git
在移動開發(fā)中,
上拉加載、分頁加載幾乎是隨處可見,
各種第三方控件也層出不窮,
但是我們真的需要第三方嗎?
第三方與我們的項目真的契合嗎?
用戶體驗一定好嗎?
現(xiàn)在就給大家分享下我的分頁加載,
我的方案不能稱之為上拉加載,
不是不能,
而是不需要。
看下效果就知道咯,
為了更直觀的表現(xiàn),
我把每一頁的條目用不同的顏色來代替:
可以發(fā)現(xiàn),
我的方案與一般的上拉加載最大的不同,
就是我的方案完全沒有阻塞,
只要不全部看完,
就一直暢通無阻。
而一般的都是還沒看幾條,
就會提示你再拉一下,
不但不友好,
體驗也不行。
好了,
介紹就到這里,
下面開啟干貨模式。
一、滑動加載
說得那么高大上,
是不是以為會很難很難?
其實不然,
關(guān)鍵只是一個監(jiān)聽而已。
// ListView滑動監(jiān)聽,滑動到倒數(shù)第三個條目即開始讀取下一頁內(nèi)容
AbsListView.OnScrollListener scrollListener = new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// 判斷是否快滾動到底部
if (view.getLastVisiblePosition() >= view.getCount() - 4) {
// 滾動到倒數(shù)第三個條目的時候,就開始讀取下頁內(nèi)容
loadData();
}
}
};
lv_list.setOnScrollListener(scrollListener);
塵少一貫風(fēng)格,
就是這么簡單。
但是我要說的還沒說完,
既然我的優(yōu)勢是用戶體驗高,
那我就將我的優(yōu)勢繼續(xù)發(fā)揮咯。
二、狀態(tài)提示
細心地用戶會發(fā)現(xiàn),
我的列表底部有一行文字,
“已加載全部商品”,
但是這只是其中一種狀態(tài),
它有四個狀態(tài):
1、正常狀態(tài)
蓄勢待發(fā),
隨時可以加載下一頁內(nèi)容
2、正在加載
正在讀取下一頁內(nèi)容,
除非讀取結(jié)束,
否則不會改變。
更重要的功能是防止異步帶來的困擾,
例如第三頁數(shù)據(jù)還沒回來,
第四頁就又開始請求了,
有了這個狀態(tài),
只需要在網(wǎng)絡(luò)請求時做個小判斷,
我們就可以不再為異步而頭疼了
3、已加載全部
當(dāng)所有數(shù)據(jù)都已讀取完畢,
就是功德圓滿的時刻,
一切結(jié)束不解釋。
4、讀取異常
這個其實很常見,
服務(wù)器異常、
網(wǎng)絡(luò)不暢等,
這個時候這行文本就有了另一個功能,
那就是點擊重新加載。
是不是很清新脫俗、
通俗易懂?
看到這里,
是不是很想立刻體驗一把呢?
廢話不多說,
塵少老規(guī)矩,
上源碼:
http://download.csdn.net/download/bamboy_/9736883
本文為ListView的實現(xiàn)方式,
想要RecyclerView的實現(xiàn)方式,
可以克隆Bamboy合集的Git,
更有全新的插件化列表哦:
https://github.com/Bamboy120315/bamboy.git
手機掃碼下載App一睹為快:
