本文為ListView的實(shí)現(xiàn)方式,
想要RecyclerView的實(shí)現(xiàn)方式佃迄,
可以克隆Bamboy合集的Git:
https://github.com/Bamboy120315/bamboy.git
在移動開發(fā)中泼差,
上拉加載、分頁加載幾乎是隨處可見呵俏,
各種第三方控件也層出不窮堆缘,
但是我們真的需要第三方嗎?
第三方與我們的項(xiàng)目真的契合嗎柴信?
用戶體驗(yàn)一定好嗎套啤?
現(xiàn)在就給大家分享下我的分頁加載宽气,
我的方案不能稱之為上拉加載随常,
不是不能,
而是不需要萄涯。
看下效果就知道咯绪氛,
為了更直觀的表現(xiàn),
我把每一頁的條目用不同的顏色來代替:
可以發(fā)現(xiàn)涝影,
我的方案與一般的上拉加載最大的不同枣察,
就是我的方案完全沒有阻塞,
只要不全部看完燃逻,
就一直暢通無阻序目。
而一般的都是還沒看幾條,
就會提示你再拉一下伯襟,
不但不友好猿涨,
體驗(yàn)也不行。
好了姆怪,
介紹就到這里叛赚,
下面開啟干貨模式。
一稽揭、滑動加載
說得那么高大上俺附,
是不是以為會很難很難?
其實(shí)不然溪掀,
關(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àn)高沮稚,
那我就將我的優(yōu)勢繼續(xù)發(fā)揮咯艺沼。
二、狀態(tài)提示
細(xì)心地用戶會發(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获高、讀取異常
這個其實(shí)很常見,
服務(wù)器異常吻育、
網(wǎng)絡(luò)不暢等念秧,
這個時候這行文本就有了另一個功能,
那就是點(diǎn)擊重新加載扫沼。
是不是很清新脫俗出爹、
通俗易懂?
看到這里缎除,
是不是很想立刻體驗(yàn)一把呢严就?
廢話不多說,
塵少老規(guī)矩器罐,
上源碼:
http://download.csdn.net/download/bamboy_/9736883
本文為ListView的實(shí)現(xiàn)方式梢为,
想要RecyclerView的實(shí)現(xiàn)方式,
可以克隆Bamboy合集的Git,
更有全新的插件化列表哦:
https://github.com/Bamboy120315/bamboy.git
手機(jī)掃碼下載App一睹為快: