RecycleView 區域性重新整理
阿新 • • 發佈:2018-12-20
最近由於功能需要,我需要在介面上通過RecycleView來展示Gif圖片的列表,展示其實很簡單,只要通過RecycleView來設定佈局管理器,然後設定介面卡就ok了.但是麻煩的是在於他是需要在使用者點選的時候,在item被選中的時候有一個選中框,當然這也不難做,但是你要在選中的時候去顯示選中框,就需要呼叫adapter的notifyDataChanged(),但是這個重新整理是當前顯示的所有item都重新整理,當然你完全可在在onBindViewHolder()方法中去實現選中框的顯示(無非就是判斷點選的位置是否相同之類的)。可是這樣就有個大問題,你全部重新整理的話,那麼整個佈局的gif都會重新整理並且都從開始動態展示。這樣很難看,如果你的gif圖開頭都是白色的你就會看到一大片白色海洋閃過(別問我怎麼知道的)。
後來,我選擇使用RecycleView的區域性重新整理的方法,notifyItemChanged(position),但是沒有實現成功,後來去檢視原始碼,發現需要去重寫一個onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads)方法。
在需要呼叫區域性重新整理的地方呼叫adapter.notifyItemChanged(position,payloads);(這個payloads隨便傳)
原始碼中,只要 判斷這個不為空,就表示他會只重新整理相應的position位置,為空就會預設重新整理所有的item.