2016-09-16 7 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가 내 대답을 변경했습니다. –

관련 문제