【问题标题】:How to know if the image still exists如何知道图像是否仍然存在
【发布时间】:2016-09-16 12:54:23
【问题描述】:

我的应用创建了一个相册,用户选择了他/她想要添加到相册中的图像。

我将选定的图像路径存储在数据库中并检索这些路径并将其转换为位图并将它们放置在 RecyclerView 中。

我的问题是如果用户删除了图库中的图像但我的数据库中的路径仍然存在怎么办我的应用程序如何适应这种情况,因为我只将图像路径保存在我的数据库中?

下面是在 RecyclerView 中显示图像的代码

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

    static List<GettersSetters> dbList;
    static Context context;

    ImageAdapter(Context context, List<GettersSetters> dbList) {
        this.dbList = new ArrayList<GettersSetters>();
        this.context = context;
        this.dbList = dbList;

    }

    @Override
    public ImageAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
                R.layout.item_image, null);

        ViewHolder viewHolder = new ViewHolder(itemLayoutView);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ImageAdapter.ViewHolder holder, int position) {

        Bitmap img = decodeBitmapWithSize(dbList.get(position).getPath(),300,150, true);
        holder.imageGallery.setImageBitmap(img);
    }

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

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        public ImageView imageGallery;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);
            imageGallery = (ImageView) itemLayoutView.findViewById(R.id.img_row);
            itemLayoutView.setOnClickListener(this);
            itemLayoutView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Toast.makeText(context,"Delete Image",Toast.LENGTH_LONG).show();
                    return true;
                }
            });
        }

        @Override
        public void onClick(View v) {

        }
    }

【问题讨论】:

  • 检查路径是否有效...?
  • 从数据库中检查。
  • 您可以在要显示图像时检查文件是否存在。
  • 在设置为 ImageView 之前,每次只检查路径中的图像是否存在

标签: android sqlite android-recyclerview


【解决方案1】:

当您从路径中检索位图时,创建一个文件对象并检查该文件是否存在。如果它不存在则忽略它。

 File file = new File(dbList.get(position).getPath());
 if (file.exists()) {
    //draw the bitmap here
 }

【讨论】:

    【解决方案2】:

    你可以这样做

        File file = new File("<your_image_path>");
        if (file.isFile()) {
        //do your stuff here
        }
    

    【讨论】:

    • 这里的 imageName 是什么?
    • @ChristineRamos 改变了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2020-11-29
    相关资源
    最近更新 更多