簡體   English   中英

如何在 notifyDataSetChanged 上禁用 recyclerview 滾動到頂部(第一項)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM