gpt4 book ai didi

android - 从内部存储和数组列表中删除图像文件

转载 作者:行者123 更新时间:2023-11-30 00:53:45 25 4
gpt4 key购买 nike

基本上,我将图像保存在内部存储目录中。然后我使用 ArrayList 在 recyclerview 中显示它们。行布局中的每个图像上都有一个十字按钮(见屏幕截图)。我不仅需要从 recyclerview 中删除图像,还需要从内部目录中删除图像。我能够从 recyclerview 的数组列表中删除图像,但目录中的图像不会被删除。

// Method in activity to show images from int. storage to recyclerview.

private void showImages(){

File directory = new File(file_path);
File newfile[] = directory.listFiles();

Log.e("sammy_arrlistsize_befor"," "+finalImages.size());

if(finalImages!=null )finalImages.clear();

for (int i= 0; i < newfile.length; i++) {
String path = "file://"+newfile[i].getAbsolutePath();
finalImages.add(path);
Log.e("sammy_imagepath"," "+path);
}

Log.e("sammy_arrlistsize_after"," "+finalImages.size());

recyladapter.notifyDataSetChanged();

}
//Adapter

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

private List<String> itemList;
private Context mContext;

public RecycleImageAdapter(Context context, List<String> itemList) {
this.itemList = itemList;
this.mContext = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.imagelayout, parent, false);
return new ViewHolder(view);
}

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

Uri uri = Uri.parse(itemList.get(position));
holder.setImageView(uri);

}

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

class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

ImageView image, delbtn;

ViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.img_thumbnail);
delbtn = (ImageView)itemView.findViewById(R.id.del);
delbtn.setOnClickListener(this);
}

public void setImageView(Uri uri){
Picasso.with(mContext).load(uri).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
image.setImageBitmap(bitmap);
}

@Override
public void onBitmapFailed(Drawable errorDrawable) {
Log.e("sammy_error"," "+errorDrawable);
}

@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {

}
});
}

@Override
public void onClick(View view) {
//Here I'm deleting image
int position = getAdapterPosition();
Toast.makeText(mContext, itemList.get(position), Toast.LENGTH_SHORT).show();


File file = new File(itemList.get(position));
file.delete();

itemList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, itemList.size());
}
}
}

enter image description here

最佳答案

在您的点击方法中:

获取文件路径

String path = "file://"+newfile[i].getAbsolutePath();
File file = new File(path);
file.delete();

试试这段代码。

关于android - 从内部存储和数组列表中删除图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40521865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com