在notifyDataSetChanged()中禁用动画

问题描述 投票:0回答:1

我正在尝试根据RecyclerView项目状态(已选择/未选择)更改ImageView(可见/不可见)的可见性,因此,如果选择了该项目,我想使ImageView可见,例如下图:

enter image description here

我编写了以下代码以使其成为真:

    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()方法都会附带一个动画,看起来不流畅且美观。

如何禁用动画并更新项目?

java android android-recyclerview notifydatasetchanged
1个回答
0
投票

回收者视图上有一个默认的项目动画器。您可以在视图/片段/活动中创建回收者视图时禁用它:

((DefaultItemAnimator) recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
© www.soinside.com 2019 - 2024. All rights reserved.