2016-09-16 17 views
1

私のアプリはアルバムを作成し、ユーザーはアルバムに追加するイメージを選択します。イメージがまだ存在するかどうかを確認する方法

私は選択した画像パスをデータベースに保存し、それらのパスを取得してBitmapに変換し、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

DBからチェックしてください。 –

+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が私の答えを変えました。 –

関連する問題