java - 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);
}
解决方案
找到了。
recyclerView.setItemAnimator(new DefaultItemAnimator(){
@Override
public void onRemoveFinished(RecyclerView.ViewHolder item) {
super.onRemoveFinished(item);
}
});
推荐阅读
- asp.net - ASP.Net 代码隐藏中的 PrintDocument.Print
- java - NoSuchMethodError: javassist.CtClass.getDeclaredClasses()
- java - Ticklistener 中的 Arrayupdate 应用程序崩溃
- r - 为字符串向量获取每个字符串的多个匹配项
- mysql - 具有 90% 相同列的两个不同表的最佳设计
- android - React Native iOS 构建失败,“多个命令产生”错误
- python - 使用 Python 读取位于 SharePoint 文件夹中的 Excel 工作表
- reactjs - reactjs中REF和INNERREF的区别
- javascript - 无法将 frida 函数附加到 android 本机 lib 函数
- python - 如何重新排序行,通过在 python 中使用 pandas 或 numpy 移动多个单独的行下面的 X 行