2016-09-27 28 views
0

在RecyclerView中,onCreateViewHolder方法將根據需要創建新的視圖持有者。我知道它會被調用多次,因爲列表中的項目可以放在屏幕上。但是,由於某種奇怪的原因,當我向下滾動我的RecyclableList時,會再次調用onCreateViewHolder。爲什麼它會創建一個新的viewHolder?在什麼情況下會查看待辦事項?我認爲它只需要調用一次。RecyclerView - onCreateViewHolders在被刮下時被多次調用

的logcat:

09-27 16:39:20.805 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.814 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.817 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.818 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.822 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.825 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.826 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 

當我向下滾動,這些被調用:

09-27 16:39:20.827 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.828 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 
09-27 16:39:20.830 8603-8603/teamtreehouse.com.myapplication D/testHourViewHolder: I AM INVOKED 

回答

1

一個RecyclerView的一點是,它並不需要持有對象的完整清單記憶在任何時候;這意味着它不會爲列表項目創建ViewHolders,直到它們(幾乎)在屏幕上。因此,當您第一次啓動您的活動時,它將在視圖內創建所有ViewHolders(具有防止口吃的輕微閾值),而不是其他任何內容,則當您滾動它時,會開始生成以下視圖。