面試記錄第八節 (listview面試)

2021-08-08 15:17:13 字數 1767 閱讀 8949

答:他是乙個能將資料集合以動態滾動的方式展示到使用者介面上的view

答:adapter為每乙個資料製作view,然後交給listview來顯示。adapter的出現就是保證資料和view 的分離。這也是一種mvc的設計模式。他只會通過adapter來處理資料來源。同時adapter的介面又是統一的,所以這會讓listview不用去擔心資料適配方面的問題。

答:adapter為每乙個資料製作view,然後交給listview來顯示。adapter的出現就是保證資料和view 的分離。這也是一種mvc的設計模式。他只會通過adapter來處理資料來源。同時adapter的介面又是統一的,所以這會讓listview不用去擔心資料適配方面的問題。

答:在原始碼中,listview繼承的是abslistview,而recycelbin其實就是ablistview裡面的內部類(如圖02)。

而在這個內部類中有三個重要的儲存陣列。

1、private view mactiveviews = new view[0];//這裡面儲存的是使用者可見的view,也就是螢幕當前顯示的view。而且這些view可以被復用。

2、private arraylist mscrapviews;//他是乙個二位陣列,他表示所有廢棄的view。而這些廢棄的view就是儲存在mscrapviews中。

3、private arraylist mcurrentscrap;//當前被劃出去的,就是剛剛被劃出去的。

例如下圖03

也就是顯示在當前螢幕可間範圍的資料是儲存在記憶體中的,其他的都是儲存在recyclebin當中。加入元素6將要顯示在介面中的時候,又會通過getview獲取到元素0的這個位置,然後達到復用的效果。

答:convertview重用/viewholder在geiview()方法裡面,他有乙個引數叫做convertview,而它的作用就是快取的。利用快取的convertview可以做判斷,如果快取中它不存在,也就是convertview為空的時候我們才會建立它。如果已經存在就可以呼叫已經有的view。

public view getview(final

int position, view convertview, viewgroup parent) else

}這種方在初次顯示的時候,每顯示乙個item,就會就會呼叫一次getview()方法,並且每次呼叫getview()方法時convertview 都為空。當它移除螢幕的時候convertview就不在為空,他就是移除螢幕的那個item值。所以convertview是listview效能優化最重要的一點。

viewholder:

viewholder的作用,可以避免多次的在getview進行findviewbyid(),我們知道所有的view都是二叉樹的結構,每次遍歷都很耗時,利用viewholder減少findviewbyid()的次數,就提高了遍歷的時間。

注意:在getview方法中少做耗時操作,這樣可以保證listview滑動的流程性。

第八節 函式

函式的特性 減少 重複 使程式變得可擴充套件 使程式變得易維護 乙個函式只做一件事情 變數作用域 python 中,程式的變數並不是在哪個位置都可以訪問的,訪問許可權決定於這個變數是在 賦值的。變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。python的作用域一共有4種,分別是 以 l...

編譯原理 第八節

分為兩大類 自頂向下分析 和 自底向上分析 其中前者又細分為 遞迴下降分析法 包含回溯的遞迴下降分析法和不含回溯的遞迴下降分析法 和非遞迴的 分析法 ll分析法 後者分為算符優先分析法和lr分析法。思想 從語法的開始符號出發,試探使用不同產生式,尋找匹配於輸入符號串的推導。或者說,從對應文法開始符號...

第八節 觸發器

上節中學到了quartz 如何解析corn like 表示式,其實觸發器中最核心的地方就是處理時間,這一節讓我們來了解下quartz中的觸發器有哪些吧 我想大家一定首先想到的就是處理corn like的觸發器吧,它就是crontriggerimpl觸發器,還是看一下類圖,看看有多少觸發器,和它們之間...