RecyclerView 踩坑記

在這裏插入圖片描述

  1. 左圖,橫屏時,左側 RecyclerView 高度不需要佔滿屏幕,但出現被強行佔滿,只好重寫onMeasure
  2. 由於視頻播放View組件要不但要在橫豎屏展示,還要雙擊跳到大屏上,只想到了管理View對象,在onBindViewHolder 時動態添加VideoView,爲了刷新圖片不閃爍更好的性能,取消動畫,itemAnimator.setSupportsChangeAnimations(false) ,setHasFixedSize =true , 又爲了能正常推拉流,setIsRecyclable=false.
    notifyDataSetChanged 下完成沒問題。但由於1個屬性改變,每次全部更新,導致了VideoView 黑屏,
  3. DiffUtil 局部刷新,出現了item 能插入,不能移除的問題,調試源碼發現,triggerUpdateProcessor方法裏面,mHasFixedSize =true, 不會走requestLayout。手動調用requestLayout,或註釋setHasFixedSize 能解決item 增加、移出刷新問題,緊接着局部刷新失效了,局部刷新調試時onBindViewHolder 以及payloads 方法都有進來以及更新了相應UI,但是Item界面沒有發生任何變化。調試發現調用rv.requestLayout 方法失效了,造成原因不清楚。後來把setIsRecyclable 註釋掉,局部刷新好了,不過,視頻™的播不出,其它UI能正常顯示,相關函數也正常被調用,後來我註釋setSupportsChangeAnimations ,居然好了。摁,就這樣吧,閃點沒關係了/:😃

要玩局部刷新,setHasFixedSize,setSupportsChangeAnimations,setIsRecyclable API 使用慎重慎重

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章