【发布时间】: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