package com.example.smart.ui.viewer; import android.net.Uri; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; import com.example.smart.R; import com.github.piasy.biv.view.BigImageView; import com.github.piasy.biv.view.ImageViewFactory; import java.util.List; public class RecyclerAdapter extends RecyclerView.Adapter { private List imageUrls; private ImageViewFactory viewFactory = new GlideImageViewFactory(); public RecyclerAdapter(List imageUrls) { this.imageUrls = imageUrls; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item__viewer, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.bind(imageUrls.get(position)); } @Override public int getItemCount() { return imageUrls.size(); } @Override public void onViewRecycled(ViewHolder holder) { super.onViewRecycled(holder); holder.clear(); } @Override public void onViewAttachedToWindow(ViewHolder holder) { super.onViewAttachedToWindow(holder); if (holder.hasNoImage()) { holder.rebind(); } } class ViewHolder extends RecyclerView.ViewHolder { private ImageView itemImage; private String imageUrl; ViewHolder(View itemView) { super(itemView); itemImage = itemView.findViewById(R.id.itemImage); // itemImage.setProgressIndicator(new ProgressPieIndicator()); // itemImage.setTapToRetry(true); // itemImage.setImageViewFactory(viewFactory); } void bind(String imageUrl) { this.imageUrl = imageUrl; // itemImage.showImage(Uri.parse(imageUrl)); Glide.with(itemView.getContext()).load(Uri.parse(imageUrl)).into(itemImage); } void rebind() { // itemImage.showImage(Uri.parse(imageUrl)); Glide.with(itemView.getContext()).load(Uri.parse(imageUrl)).into(itemImage); } void clear() { // SubsamplingScaleImageView ssiv = itemImage.getSSIV(); // if (ssiv != null) { // ssiv.recycle(); // } } boolean hasNoImage() { // SubsamplingScaleImageView ssiv = itemImage.getSSIV(); // return ssiv == null || !ssiv.hasImage(); return false; } } }