java - 在 notifyDataSetChanged() 中禁用动画
问题描述
我正在尝试更改ImageView
(可见/不可见)的可见性,具体取决于 RecyclerView 项目状态(已选择/未选择),所以如果项目被选中,我想使其ImageView
可见,如下图所示:
我编写了以下代码来实现这一点:
private int selectedItem = 0;
public class ViewHolderFilters extends RecyclerView.ViewHolder implements View.OnClickListener {
CircleImageView img;
CircleImageView selected_effect;
ViewHolderFilters(View itemView) {
super(itemView);
img = itemView.findViewById(R.id._imageView);
selected_effect = itemView.findViewById(R.id.selected_effect);
img.setOnClickListener(this);
}
void onBindView(int position) {
final String s = spacecrafts.get(position);
Glide.with(c)
.asBitmap()
.load(s).centerCrop()
.apply(new RequestOptions().placeholder(R.drawable.transparent_icon))
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
progress.setVisibility(View.GONE);
img.setImageBitmap(setEffectLight(c, resource, getThumbnail(bitmapOriginal)));
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
if (selected_item == position) {
selected_effect.setVisibility(View.VISIBLE);
} else {
selected_effect.setVisibility(View.INVISIBLE);
}
}
@Override
public void onClick(View view) {
monShaderRecyclerViewClickListener.onClick(view, spacecrafts.get(getAdapterPosition()));
selected_item = getAdapterPosition();
notifyDataSetChanged();
}
}
我的问题:
每次我选择一个项目时,该notifyDataSetChanged()
方法都会带来一个动画,看起来并不流畅和好看。
如何禁用动画并更新项目?
解决方案
回收站视图上有一个默认的项目动画师。您可以在视图/片段/活动中创建回收器视图时禁用它:
((DefaultItemAnimator) recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
推荐阅读
- smtp - 在哪里可以找到 Airflows 电子邮件日志?
- angular - 角度 ngAfterContentInit 将数据传递给子组件
- html - 列填充:自动;没有高度溢出div
- java - 对 MongoDB 的 java 驱动程序中的重复唯一键错误做出反应
- javascript - 检查 Cloud Firestore 查询是否返回某些内容
- javascript - 在javascript中将数组声明为函数是什么意思?
- php - 登录后不跳转
- excel - 调用宏时如何修复溢出错误
- filter - Tableau:使用聚合进行筛选
- python - Tensorflow 使用 cpu (tensorflow) 与 gpu (tensorflow-gpu) 后端显示不同的行为