android開發的時候,會經常用到listview。在擷取網絡資料進行展示的時候,要充分考慮流量和網絡延遲。一般讀取網絡資料都是即時性的,就是說,使用者看到哪裡就擷取哪裡的資料,這樣就節約了流量和降低了系統的負擔。
通過翻頁和滑動加載可以達到這種目的,翻頁我想大家肯定不陌生。在android裡有左右滑動翻頁、點選按鈕翻頁等等,有時候根據情況和使用者體驗。很多人采用滑動資料加載的模式,這種模式通過監聽listview的滑動事件來加載資料,優點在于:使用者體驗較好,可根據使用者需要實時加載資料,可以根據需要做出各種比較絢麗的效果。缺點在于資料量過大的時候,比如幾百上千條資料。使用者想傳回去看指定資訊時,這是使用者體驗就不是很好了。是以不管什麼功能,要注意分情況使用。
下面進入正題,首先我們實作listview的onscrolllistener事件:protected onscrolllistener onscrolllistener = new onscrolllistener() {
java代碼
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuIXY0N3Xu92Yp9CXzV2Zh1WavwVbvNmLllXZ0lmLn5WZudmblh2cuFGcvw1LcpDc0RHaiojIsJye.png)
public void onscrollstatechanged(abslistview view, int scrollstate) {
// 判斷listview是否停止滑動并且處于底部
if(scrollstate == onscrolllistener.scroll_state_idle && isrefreshfoot){
loadbool = false; // 用布爾作為開關,防止在加載資料時,出現多次啟動線程加載資料
// 資料加載
loaddata();
}
}
public void onscroll(abslistview view, int firstvisibleitem,
int visibleitemcount, int totalitemcount) {
// 判斷是否滑動到底部
if(firstvisibleitem + visibleitemcount == totalitemcount){
isrefreshfoot = true;
}else{
isrefreshfoot = false;
在滑動的時候需要判斷是否停止滑動并且listview以滑至底部,這裡我用了一個loadbool變量來設定狀态,防止使用者在滑動加載資料後,繼續多次滑動加載。容易引起加載線程過多導緻程式異常。
實作了滑動事件處理後,隻需要監聽listview的滑動事件就行了。在滑動的時候會調用loaddata()方法,在這個方法裡實作資料加載就行了。