在 ImageView 中显示图像并将其保存到 Android 上的内部存储中

Posted

技术标签:

【中文标题】在 ImageView 中显示图像并将其保存到 Android 上的内部存储中【英文标题】:Display Image in ImageView and save it to internal storage on Android 【发布时间】:2021-04-27 16:24:42 【问题描述】:

我正在使用 firebase 存储中的 picasso 库在 recyclerview 中显示一些图像,我想要实现的是在图像显示在图像视图中后立即将图像保存到特定于应用程序的内部存储中。

然后当我下次打开应用程序时,我想从内部存储中获取图像,如果图像在那里不可用,则从 firebase url 中获取它。我可以使用 Picasso 库显示图像,但后来我被卡住了,我刚刚开始 android 开发,不知道如何从这里开始。下面是我的代码。

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> 
    private List<LoadImage> loadImages;
    private Map<String, Bitmap> mBitmaps = new HashMap<>();

    public ImageAdapter(List<LoadImage> loadImages) 
        this.loadImages = loadImages;
    

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) 
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_view, parent, false);
        return new ImageViewHolder(view);
    

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) 
        LoadImage currentImage = loadImages.get(position);

        Picasso.get()
                .load(currentImage.getImageUrl())
                .fit()
                .into(holder.imageViewDownload);
    

    @Override
    public int getItemCount() 
        return loadImages.size();
    

    public class ImageViewHolder extends RecyclerView.ViewHolder 

        ImageView imageViewDownload;

        public ImageViewHolder(@NonNull View itemView) 
            super(itemView);

            imageViewDownload = itemView.findViewById(R.id.image_view_download);
        
    

【问题讨论】:

毕加索已经将图像保存在缓存中。 但是当我的互联网关闭时,我的应用不显示任何图像 【参考方案1】:

您无需将图像保存到内部存储中。当您加载图像时,毕加索库会为您执行此操作,它将图像缓存到特定于应用程序的目录。下次如果可用,它将加载缓存的图像,如果没有,它将从 url 下载图像并缓存

【讨论】:

好吧,当我在没有互联网的情况下打开我的应用程序时,只有一个回收站视图加载,并且没有显示图像

以上是关于在 ImageView 中显示图像并将其保存到 Android 上的内部存储中的主要内容,如果未能解决你的问题,请参考以下文章

通过 AsyncTask 下载图像并将其显示在 Imageview 中而不存储在 sdcard 中

Android:无法从mysql数据库中检索图像URL并将其显示在imageView中

通过AsyncTask下载图像并将其显示在Imageview中而不存储在SD卡中

获取 ImageView 的图像并将其发送到带有 Intent 的活动

如何获得ImageView中的图像

当我尝试捕获图像(内置相机)并将其保存到文件时出现 NullPointerException [重复]