閱讀218 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Android【 ListView】滑動數據加載

Android開發的時候,會經常用到listview。在獲取網絡數據進行展示的時候,要充分考慮流量和網絡延遲。一般讀取網絡數據都是即時性的,就是說,用戶看到哪裏就獲取哪裏的數據,這樣就節約了流量和降低了係統的負擔。

  通過翻頁和滑動加載可以達到這種目的,翻頁我想大家肯定不陌生。在android裏有左右滑動翻頁、點擊按鈕翻頁等等,有時候根據情況和用戶體驗。很多人采用滑動數據加載的模式,這種模式通過監聽listview的滑動事件來加載數據,優點在於:用戶體驗較好,可根據用戶需要實時加載數據,可以根據需要做出各種比較絢麗的效果。缺點在於數據量過大的時候,比如幾百上千條數據。用戶想返回去看指定信息時,這是用戶體驗就不是很好了。所以不管什麼功能,要注意分情況使用。

  下麵進入正題,首先我們實現listview的OnScrollListener事件:protected OnScrollListener onScrollListener = new OnScrollListener() {

Java代碼  收藏代碼
  1. public void onScrollStateChanged(AbsListView view, int scrollState) {  
  2.     // 判斷listview是否停止滑動並且處於底部  
  3.     if(scrollState == OnScrollListener.SCROLL_STATE_IDLE && isRefreshFoot){  
  4.             loadBool = false// 用布爾作為開關,防止在加載數據時,出現多次啟動線程加載數據  
  5.               
  6.             // 數據加載  
  7.             loadData();  
  8.     }  
  9. }  
  10.   
  11. public void onScroll(AbsListView view, int firstVisibleItem,  
  12.         int visibleItemCount, int totalItemCount) {  
  13.     // 判斷是否滑動到底部  
  14.     if(firstVisibleItem + visibleItemCount == totalItemCount){  
  15.         isRefreshFoot = true;  
  16.     }else{  
  17.         isRefreshFoot = false;  
  18.     }  
  19. }  
 在滑動的時候需要判斷是否停止滑動並且listview以滑至底部,這裏我用了一個loadBool變量來設置狀態,防止用戶在滑動加載數據後,繼續多次滑動加載。容易引起加載線程過多導致程序異常。

實現了滑動事件處理後,隻需要監聽listview的滑動事件就行了。在滑動的時候會調用loadData()方法,在這個方法裏實現數據加載就行了。

最後更新:2017-04-02 17:09:28

  上一篇:go java全角字符轉換為半角 半角轉全角
  下一篇:go Android 優化Bitmap避免 OutOfMemoryError