2015-03-03 76 views
14

這裏的東西: 有人知道setHasFixedSize方法嗎?有些人說,如果所有項目的大小相同,它允許進行優化,而在android.support.v7.widget的RecyclerView類中,它會對此進行評論:如果RecyclerView可以預先知道 適配器中的更改,則可以執行若干優化內容不能改變RecyclerView本身的大小。如果您對RecyclerView的使用屬於此類別,請將其設置爲true。我們何時使用recyclerView.setHasFixedSize?

這是什麼意思?任何人都可以向我展示使用它的上下文或解釋上面的「這個類別」的含義嗎? 非常感謝。

+0

該文件解釋它。如果RecyclerView能夠事先知道適配器內容的變化不能改變RecyclerView本身的大小,那麼它可以執行一些優化。如果您對RecyclerView的使用屬於此類別,請將此設置爲true。' – 2015-03-03 09:07:59

+0

對不起,我真的不明白以下詞語:適配器內容中的「更改」無法更改RecyclerView本身的「大小」。如果您對RecyclerView的使用屬於此類別,請將其設置爲true。什麼樣的變化,它的大小?如果是這樣,那麼「大小」是什麼意思? – machinezhou 2015-03-04 04:59:54

+0

根據適配器中的對象數量,您的recyclerview是否會改變witdh或height? – 2015-03-04 08:42:50

回答

9

有趣的RecyclerView知道它的大小(寬度和高度尺寸)取決於適配器內容避免昂貴的佈局操作。如果RecyclerView事先知道其大小不取決於適配器內容,那麼它將跳過檢查每次向適配器添加或移除項目時它的大小是否應該改變。這一點尤其重要,因爲插入刪除元素可能會經常發生。

如果RecyclerView(在RecyclerView本身)的大小...

... 不會對適配器內容取決於

mRecyclerView.setHasFixedSize(true); 

... 取決於上適配器內容:

mRecyclerView.setHasFixedSize(false); 

如果您檢查RecyclerView class,您會看到更多d因爲截至目前爲止mHasFixedSize未在該課程的許多地方使用。

將其設置爲true並不意味着RecyclerView的大小是固定的,只是意味着它不會因爲適配器內容的變化而改變。例如,RecyclerView的大小可能會因其父項的大小更改而發生更改。

5

setHasFixedSize()用於讓RecyclerView保持相同的大小

此信息將用於優化本身。

這裏是參考網址

http://antonioleiva.com/recyclerview/

例子:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list); 
recyclerView.setHasFixedSize(true); 
+0

如果數據來自服務器並且其大小通常是意料之外的,那麼在這種情況下,我們最好不要將該方法設置爲真,對嗎? – machinezhou 2015-03-04 04:52:42

+0

所以這讓我總結:如果有20個圖標,我想把它們放入recyclerview,這是最好的「類別」設置該方法是true.please糾正我。 – machinezhou 2015-03-04 04:57:28

相關問題