首页 > 解决方案 > notifyItemRemoved() 滚动回收器视图但不调用 onScrolled()

问题描述

我有一个 recyclerView 设置为轮播视图。当项目移动时,它们会随着靠近屏幕中心而扩展。通过覆盖 onScrolled() 调用缩放视图的方法。我的问题是当删除一个项目时,视图被滚动但 onScrolled() 没有被调用并且视图不缩放。有没有办法知道何时删除视图并完成动画?我不能覆盖 onItemRangeRemoved() 因为它只在删除开始时调用。

 @Override
        public void onChanged() {
            super.onChanged();
            initEmptyView();
            addOnScrollListener(new OnScrollListener() {
                @Override
                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    onScrollChanged();
                }
            });
        }

public void onScrollChanged(){
    for (int i = 0; i < getChildCount(); i++){
        View child = getChildAt(i);
        int childCenterX = (child.getLeft() + child.getRight()) / 2;
        double spreadFactor = 150;
        float scaleValue = getGaussianScale(childCenterX, 1f, 0.1f, spreadFactor);
        child.setScaleX(scaleValue);
        child.setScaleY(scaleValue);
    }

    int currentPosition = myLayoutManager.findFirstCompletelyVisibleItemPosition();
    ((TopUp) context).setCurrentPosition(currentPosition);
}

标签: javaandroidandroid-recyclerviewscroll

解决方案


找到了。

 recyclerView.setItemAnimator(new DefaultItemAnimator(){
        @Override
        public void onRemoveFinished(RecyclerView.ViewHolder item) {
            super.onRemoveFinished(item);

        }
    });

推荐阅读