android recyclerview 上下滑動導致點選事件和資料錯亂問題解決
阿新 • • 發佈:2018-11-12
今天遇到一個奇怪的Bug 上下滑動Item時候 再往上滑 撥打電話 與剛開始不一致,網上很多人說setTag種種,但並沒有什麼卵用,很鄙視那些複製貼上的
兩種解決方案
getItemViewType(int position){return position} // 這樣多種佈局應該不方便
在onBidViewHoudle中,新增點選事件的position 不要中onBidViewHoudler的position
用 houdler.getLayoutPosition();
解釋
/** * Returns the position of the ViewHolder in terms of the latest layout pass. * <p> * This position is mostly used by RecyclerView components to be consistent while * RecyclerView lazily processes adapter updates. * <p> * For performance and animation reasons, RecyclerView batches all adapter updates until the * next layout pass. This may cause mismatches between the Adapter position of the item and * the position it had in the latest layout calculations. * <p> * LayoutManagers should always call this method while doing calculations based on item * positions. All methods in {@link RecyclerView.LayoutManager}, {@link RecyclerView.State}, * {@link RecyclerView.Recycler} that receive a position expect it to be the layout position * of the item.
大致意思就是涉及增刪查改的話,onBidViewHoudler 的 pos不太準確,使用這個方法獲取最新位置
有問題請諮詢QQ 643200732 一起交流學習。 Q群 : 535807500