I'm trying to create thumbnail of a file and show it in icon of recyclerview. I'm using Glide to show those images but when I open the app, the images are displayed repeatedly and they're not correct. Please help me render correct image for each file.
private Bitmap pdfToBitmap(File pdfFile, ViewHolder holder) {
Bitmap bitmap = null;
try {
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));
final int pageCount = renderer.getPageCount();
if (pageCount > 0) {
PdfRenderer.Page page = renderer.openPage(0);
int width = page.getWidth();
int height = page.getHeight();
bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
String timeStamp = new SimpleDateFormat("ddMMyyyy").format(new Date());
String path = pdfFile.getAbsolutePath() + timeStamp + ".jpg";
imgFile = new File(path);
FileOutputStream fos = new FileOutputStream(imgFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
renderer.close();
}
} catch (Exception ex) {
ex.printStackTrace();
Log.e("error123", "Nahi ho paya");
}
return bitmap;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
PidifyFile currentFile = files.get(position);
holder.pdfName.setText(currentFile.getName());
Date lModified = currentFile.getDateCreated();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy hh:mm aa");
holder.pdfDate.setText(sdf.format(lModified));
// holder.pdfSize.setText(humanReadableByteCountSI(currentFile.length()));
new Thread(new Runnable() {
@Override
public void run() {
resultBitmap=pdfToBitmap(new File(currentFile.getFilePath()), holder);
}
}).start();
// using Glide for smooth loading of images in recycler view
Glide.with(holder.itemView.getContext())
.asBitmap()
.load(resultBitmap)
.into(holder.pdfImg);
}