在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確是...