我將相機和圖庫(多選)中的圖像保存到內部存儲器中的文件夾中。我想在水平Recyclerview中顯示這些圖像。在行佈局中,有一個關閉按鈕以及imageview。我想在點擊關閉按鈕時從內部存儲中刪除圖像(文件)。我有兩個問題: 問題1:當我從圖庫中選擇圖像(單個或多個)時,圖像保存正確,但在Recyclerview中,圖庫中的圖像顯示在所有位置,即如果圖像中有2個圖像文件夾,我從圖庫中選擇1張圖片,然後在Recyclerview中,所有3個位置將只有圖庫中的圖像。 問題2:單擊關閉按鈕時如何從文件夾中刪除圖像?在Recyclerview中顯示來自內部存儲器的圖像
//Recyclerview 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 RecycleImageAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.imagelayout, parent, false);
return new RecycleImageAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(final RecycleImageAdapter.ViewHolder holder, int position) {
for (int i= 0; i < itemList.size(); i++) {
Uri uri = Uri.parse(itemList.get(i));
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) {
int position = getAdapterPosition();
Toast.makeText(mContext, itemList.get(position), Toast.LENGTH_SHORT).show();
itemList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, itemList.size());
\t \t \t //Here I'm getting ArrayIndexOutOfBoundsException
File file = new File(itemList.get(position));
file.delete();
}
}
}
//in Fragment, code to load images
File directory = new File(file_path);
File newfile[] = directory.listFiles();
//finalImages is ArrayList<String>
if(finalImages!=null)finalImages.clear();
for (int i= 0; i < newfile.length; i++) {
String path = "file://"+newfile[i].getAbsolutePath();
finalImages.add(path);
}
recyladapter.notifyDataSetChanged();
我很抱歉,我無法理解你的問題。你能否詳細解釋一下,以便我可以更好地幫助你? –
我想要顯示來自特定文件夾的圖像,讓我們在Recyclerview的內部存儲中說「Arc」。我將庫中的圖像以及相機保存在Arc文件夾中。將圖像(從圖庫或相機)保存到Arc後,我使用片段中的上述代碼來顯示圖像。 –
所以這個過程就像這樣:Camera Intent - > Captured image - >保存在Arc - > Fragment代碼中以在recyclerview中顯示圖像。或圖庫 - >所選圖像 - >保存在Arc - >碎片代碼以在recyclerview中顯示圖像。 –