Динамическая высота Glide ImageView внутри RecyclerView Мигает при вызове notifydatasetchanged?

Я создаю RecyclerView для отображения некоторых изображений и текста, затем пользователь может добавлять в закладки строки RecyclerView. Изображения RecyclerView соответствуют родительскому по ширине, а высота будет равна wrap_content. При нажатии на закладку адаптер вызывает notifydatasetchanged в RecyclerView. Моя проблема в том, что после изменения вызова notifydatasetchanged RecyclerView мигает изображениями по высоте.

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
            if (holder instanceof VHITEM) {
                final VHITEM VHitem = (VHITEM) holder;
                Glide.with(mContext)
                        .load(articleDataList.get(position).SourcePath)
                        .asBitmap()
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .placeholder(R.drawable.defaultimage)
                        .error(R.drawable.defaultimage)
                        .dontAnimate()
                        .into(VHitem.imageViewTagPic); 
            }
        }

Нажатие кнопки

    VHItem.imageViewAddRemoveBookmark.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
    notifyDataSetChanged(); }
    }

Конфигурация RecyclerView

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);

comment
Ссылка: github.com/bumptech/glide/issues/1599   -  person TWiStErRob    schedule 06.03.2017


Ответы (2)


Попробуйте использовать это на RecyclerView, чтобы ограничить мигание изображения.

RecyclerView.ItemAnimator animator = mRecycler.getItemAnimator();

if (animator instanceof SimpleItemAnimator) {
    ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
}
person AndroidBeginner    schedule 04.03.2017
comment
пробовал, но дело не в этом. Glide, перезагружающий свои изображения в notifydataset, изменился. как этого избежать - person Bincy Baby; 04.03.2017
comment
Не могли бы вы обновить свой вопрос фрагментом кода? - person AndroidBeginner; 04.03.2017

Это не из-за скольжения, если данные элемента изменились, вызовите notifyitemchanged (position, payload), а затем переопределите метод аргумента onBindViewHolder 3.

person Bincy Baby    schedule 06.03.2017