ListView 學習 快取 3

2021-06-29 06:35:12 字數 2222 閱讀 8826

在listview 開發中,如果資料量小,那快取的效果不是很好,也就顯示不出來這種效果,但是當資料量變得很大的時候,滑動listview選單變得很困難的時候,這樣使用者體驗就變得很差,這個時候就需要使用listview的快取來處理這樣的問題,在一般情況下,使用layoutinflater進行載入檔案

layoutinflate 類似於finviewbyid這個方法,但是兩個有完全的區別,layoutflate這個方法是將layout下的mxl布局檔案進行載入,並且例項化,而後者,實在載入完畢後可以根據xml檔案中的不同的id進行查詢相應的標籤並且得到相應的物件,所以在listview的adapter中的getview方法可以快取的呼叫;

layoutinflater inflater =  (layoutinflater)context.getsystemservice

(context.layout_inflater_service);

因為context是activity的父類,所以可以構建自定義的adapter時候,需要傳入相應的activity,在構造方法中就可以傳入,然後可以根據上面的方法獲得layoutfater的物件

這裡打個小的叉,得到layoutfater物件可以有3中方式;

1. layoutinflater inflater = getlayoutinflater();//呼叫activity的getlayoutinflater() 

2. layoutinflater inflater = layoutinflater.from(context);

3. layoutinflater inflater = (layoutinflater)context.getsystemservice

(context.layout_inflater_service);

在第三種方式獲得systemservice的,在引數可以進行變化獲得吸納**的物件,引數如下:

傳入的name 	返回的物件	說明

window_service windowmanager 管理開啟的視窗程式

layout_inflater_service layoutinflater 取得xml裡定義的view

activity_service activitymanager 管理應用程式的系統狀態

power_service powermanger 電源的服務

alarm_service alarmmanager 鬧鐘的服務

notification_service notificationmanager 狀態列的服務

keyguard_service keyguardmanager 鍵盤鎖的服務

location_service locationmanager 位置的服務,如gps

search_service searchmanager 搜尋的服務

vebrator_service vebrator 手機震動的服務

connectivity_service connectivity 網路連線的服務

wifi_service wifimanager wi-fi服務

telephony_service teleponymanager **服務

inflate 方法

這樣可以在程式中有context的物件時進行獲取吸納**的服務。回到主題:

在listview中可以這樣獲取到布局檔案:

public view getview(int position, view convertview, viewgroup parent) else 

holder.img.setbackgroundresource((integer)mdata.get(position).get("img"));

holder.viewbtn.setonclicklistener(new view.onclicklistener()

});return convertview;

}

這種方式是最快的,在google大會上也是這種最快

當處理一些耗時的資源載入的時候需要做到以下幾點,以使你的載入更快更平滑:

1.   介面卡在介面主線程中進行修改

2.   可以在任何地方獲取資料但應該在另外乙個地方請求資料

3.   在主介面的執行緒中提交介面卡的變化並呼叫notifydatasetchanged()方法

listview的快取機制

listview的快取機制 1 如果有幾千,幾萬行甚至更多的 的時候,其中只有課件的項存在於記憶體中,其他的都在recycler中,recycle是android中專門用來處理快取的元件。2 listview先通過getview 方法請求乙個view,然後請求其他可見的view。這時convertv...

ListView學習筆記

1.現在xml上面新增乙個listview檢視,然後加入id 2.從id中找到listview然後呼叫setadapter new myadapter 建立乙個listview,其中的介面卡實現listadapter介面 介面卡中的public view getview int position,v...

ListView快取機制踩過的坑

listview,grildview使用時候經常會用到快取機制,隨意一搜,例子成千上萬,但是講解都是很一致,跟自己踩的坑很少有人講解到。回過頭再進行分析getview中的 我們知道,快取會記錄當前介面的view的狀態,那麼,滑動回來,之所以文字沒有錯亂是因為每次都是重新賦值的,但是我們的view確是...