How to show appropriate image for each pdf file in recyclerview using Glide?

31 Views Asked by At

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);
    }


0

There are 0 best solutions below