首页 > 解决方案 > 将图像从资产下载到移动内部存储

问题描述

我有这个适配器类。我想要实现的是我在资产文件夹中有几个 .png 图像,并且我已经在 cardview 中显示了它们,并点击了一个按钮,该特定图像应该被下载到手机的内存中。我尝试了网上的很多建议,但他们没有帮助。谁能解决我的这个问题??
这里提到的 ImageListingDao 是带有 id 和 imagepath 的 getter 和 setter 的 dao 类。我在资产文件夹中有 db,我通过它在卡片中加载图像。

public class ImageListingAdapter extends RecyclerView.Adapter<ImageListingAdapter.ViewHolder> {

    private ArrayList<ImageListingDao> imageslist;
    private Context imagelist_context;


    public ImageListingAdapter(Context context, ArrayList<ImageListingDao > imageslist){
        this.imageslist= imageslist;
        imagelist_context= context;
    }


    @NonNull
    @Override
    public ImageListingAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.image_display_binder, parent, false);
        return new ImageListingAdapter.ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ImageListingAdapter.ViewHolder holder, final int position) {

        try
        {
            AssetManager assetManager = imagelist_context.getAssets();

            InputStream is = assetManager.open(""+imageslist.get(position).getImageListingpath());
            Bitmap bitmap = BitmapFactory.decodeStream(is);
            holder.image_listing.setImageBitmap(bitmap);
            is .close();
        }
        catch(IOException ex)
        {
            ex.printStackTrace();
        }
        catch (Exception e){
            e.printStackTrace();
        }

        holder.idownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // what should I write here!!??    
            }
        });

    }

    @Override
    public int getItemCount() {
        return imageslist.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        // TextView textmessage_text_name;
        ImageView image_listing;
        ImageButton idownload, ishare, ifav;

        public ViewHolder(View itemView) {
            super(itemView);
            image_listing = itemView.findViewById(R.id.image_detail_view);
            idownload= itemView.findViewById(R.id.image_detail_download);
            ishare= itemView.findViewById(R.id.image_detail_share);
            ifav= itemView.findViewById(R.id.image_detail_fav);    
        }
    }    
}

标签: androidandroid-recyclerview

解决方案


您拍摄位图并像使用相机拍摄的任何其他图像一样保存它。

您已经有了位图,所以这里是存储图像的链接。

android - 将图像保存到画廊


推荐阅读