如何在notifyDataSetChanged上禁用recyclerview滚动到顶部(第一项)

时间:2019-12-27 12:25:49

标签: android android-recyclerview

我在回收站视图中具有固定数量的项目,但是我每10秒更新一次数据并调用notifyDataSetChanged();

当我滚动到第N个项(例如:第20个项)并在notifyDataSetChanged()上称为“回收站视图”时,将刷新并自动滚动回第一个项。如何停止滚动并更新回收者视图?预先感谢。

2 个答案:

答案 0 :(得分:0)

您可以为第一个项目创建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));
    }
}

答案 1 :(得分:0)

使用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)
    }

请确保您必须通过methods或通过activity来调用此activity object