Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ListView 優化最佳實踐

Android ListView 優化最佳實踐

編輯:關於Android編程

 

我有篇博客教大家如何利用 convertView 以及 viewHolder(static) 改善 ListView 卡頓情況;但是在 ListView 加載大量復雜布局和圖片的時候,即使使用了 convertView 和 viewHolder,ListView還是卡頓,本文主要討論了如何在加載復雜 list_item 同時保證 ListView 流暢性。

核心思想是

監聽滑動據加載,異步加載數據。

getView 函數一定不能耗時,有耗時任務要異步加載。

主要的方法:

  1. 先判斷當前 ListView 的狀態,只有 ListView 停止滑動才開啟新線程加載數據,其他狀態均忽略。

  2. 使用 getFirstVisiblePosition 和 getLastVisiblePosition 方法來顯示 item。

  3. 耗時任務一定不要在 getView 方法中進行,最好異步進行。

    具體代碼如下:

     1 //1. 判斷listView狀態
     2 AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {// ListView
     3 // 觸摸事件
     4 
     5 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
     6 }
     7 
     8 public void onScrollStateChanged(AbsListView view, int scrollState) {
     9 switch (scrollState) {
    10   case AbsListView.OnScrollListener.SCROLL_STATE_FLING:// 滑動狀態
    11   threadFlag = false;
    12   break;
    13   case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:// 停止
    14   threadFlag = true;
    15   startThread();//開啟新線程,加載數據
    16   break;
    17   case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 觸摸listView
    18   threadFlag = false;
    19   break;
    20   default:
    21   // Toast.makeText(contextt, default,
    22   // Toast.LENGTH_SHORT).show();
    23   break;
    24   }
    25 }
    26 };

    相信做到以上三點,就能運用自如的使用 ListView了,O(∩_∩)O哈哈~

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved