美文网首页
android优化:RecyclerView setHasFix

android优化:RecyclerView setHasFix

作者: 黄晓果 | 来源:发表于2017-12-14 09:45 被阅读0次

    RecyclerView的尺寸在每次改变时,比如你加任何些东西。setHasFixedSize 的作用就是确保尺寸是通过用户输入从而确保RecyclerView的尺寸是一个常数。RecyclerView 的Item宽或者高不会变。每一个Item添加或者删除都不会变。如果你没有设置setHasFixedSized没有设置的代价将会是非常昂贵的。因为RecyclerView会需要而外计算每个item的size。

    void onItemsInsertedOrRemoved() {
       if (hasFixedSize) layoutChildren();
       else requestLayout();
    }
    

    requestLayout()是很昂贵的,因为他会要求重新布局,重新绘制(详细请看Android优化),所以如当不是瀑布流时,设置这个可以避免重复的增删造成而外的浪费资源.

    当我们确定Item的改变不会影响RecyclerView的宽高的时候可以设置setHasFixedSize(true),并通过Adapter的增删改插方法去刷新RecyclerView,而不是通过notifyDataSetChanged()。(其实可以直接设置为true,当需要改变宽高的时候就用notifyDataSetChanged()去整体刷新一下)

    onItemRangeChanged(),
    
    onItemRangeInserted(),
    
    onItemRangeRemoved(),
    
    onItemRangeMoved()
    
    

    相关文章

      网友评论

          本文标题:android优化:RecyclerView setHasFix

          本文链接:https://www.haomeiwen.com/subject/mspluxtx.html