2016-09-27 27 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(具有防止口吃的轻微阈值),而不是其他任何内容,则当您滚动它时,会开始生成以下视图。