[英]How to disable recyclerview scroll to top (1st item) on notifyDataSetChanged
我在回收站視圖中有固定數量的項目,但我每 10 秒更新一次數據並調用 notifyDataSetChanged();
當我滾動到第 N 項(EX:第 20 項)並在調用回收器視圖的 notifyDataSetChanged() 上刷新並自動滾動回第一項時。 如何停止滾動並更新回收站視圖? 提前致謝。
您可以為您的第一個項目創建一個view type
和持有人,然后設置setIsRecyclable
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof HeaderViewHolder ) {
((HeaderViewHolder ) holder).setIsRecyclable(false);
((HeaderViewHolder ) holder).bind(mData.get(position));
}
}
使用onSaveInstanceState
您將保存您的recyclerview
的狀態或當前位置。就像這樣。
在您的活動中創建真實的
Parcelable recylerViewList; //this will store the position
然后創建此方法以獲取recyclerview
狀態
void storeInstance() {
AttachmentsActivity.recylerViewList=mRecyclerView?.layoutManager?.onSaveInstanceState()
}// call this method before notifyDataSetChanged()
恢復狀態的創建方法
void restore() //call this method after notifyDataSetChanged()
{
mRecyclerView?.layoutManager?.onRestoreInstanceState(recylerViewList)
}
確保您必須在activity
或通過activity object
調用此methods
。
您應該找到更改的項目並使用adapter.notifyItemChanged(itemChangedPosition)
而不是notifyDatasetChanged()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.