最近在做一個計時的項目,全局監(jiān)聽計時狀態(tài)惭墓,那計時列表也需要實時更新坛梁,但是在更新,調(diào)用timeAdapter.updateItem(item);時腊凶,發(fā)現(xiàn)item在不停的閃爍划咐,添加tag也不起作用。
后來看源碼在知道钧萍,閃爍的原因就是onBindViewHolder的重復(fù)調(diào)用褐缠。而tag不起作用的原因則是每次更新都會使用一個新的holder。使用新的holder的原因則是RecyclerView默認(rèn)有一個新舊兩個狀態(tài)的過渡動畫风瘦,使用這個動畫才會有新的holder出現(xiàn)队魏。
原因已經(jīng)知道了,解決辦法肯定是有的万搔,只要為RecyclerView加上下面的代碼:
recyclerView.setItemAnimator(null);
這樣就可以避免新holder的生成胡桨,從而避免item閃爍。