RecyclerView 播放視頻加載更多時,刷新當前視頻的問題解決。

故事背景是這樣的:項目做的是個類似抖音的短視頻播放功能,點擊進去視頻詳情,全屏播放,然後上下滑動切換視頻,用的是RecyclerView結合阿里雲player做的視頻流播放,因爲這個後臺是個分頁接口,所以在上滑到快沒數據的時候需要加載更多。之前用的是: 

this.list.clear(); //清空數據源

this.list.addAll(list); //更新數據源

adapter.notifyDataSetChanged();//刷新列表

然後就有個小問題,每頁請求10條,如果首頁當前總共10個視頻,從首頁直接點擊第10個,即當前是正在播放第10個視頻,然後直接就請求下一頁視頻數據了,使用上面的代碼會導致當前正在播放的視頻重新開始播放,體驗不太好,而且衆所周知notifyDataSetChanged()全部刷新,效率是最低的。就想着使用RecyclerView的局部刷新來替換解決,即

notifyItemRangeChanged(this.list.size()-list.size(),this.list.size());  //只刷新加載多出來的部分數據列表

然後運行發現沒效果,多的數據上滑沒有出現!懵逼ing。。。  (tip:之前一般都是用RecyclerView做列表,第一次做這種複雜的視頻流~)

//最後換成了這種寫法,順利刷新數據,同時不中斷當前正在播放的視頻進度:

this.list.addAll(list);//更新數據源
notifyItemRangeInserted(this.list.size()-list.size(),this.list.size());//更新列表個數
notifyItemRangeChanged(this.list.size()-list.size(),this.list.size());//更新列表數據

顧名思義,先插入列表個數,再進行局部刷新操作,記錄一下,具體什麼原因還沒來得及看源碼,先這樣解決了,over。

 

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