2016-09-16 74 views
1

我的應用程序創建一個相冊,用戶選擇他/她想添加到相冊的圖像。如何知道圖像是否仍然存在

我將選定的圖像路徑存儲在數據庫中,並檢索這些路徑並將其轉換爲位圖並將它們放入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) { 

     } 
    } 
+0

檢查路徑是否有效...? –

+0

從數據庫檢查它。 –

+1

無論何時您要顯示圖像,您都可以檢查文件是否存在。 –

回答

1

當您檢索從路徑的位圖,創建一個文件對象,並檢查文件存在。如果它不存在,請忽略它。

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

你可以做到這一點像

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

什麼是imageName? –

+0

@ChristineRamos改變了我的答案。 –

相關問題