我在 recylclerview 中显示 0 - 10 张图像,用于使用过滤器编辑这些图像并一次更改所有图像的背景。就像一次编辑多张图片一样。这里一切都很好,但是当我在更改后尝试保存这些图像时,我想将每张图像保存为图库中的不同图像。保存代码也可以正常工作,但是当我将回收站视图更改为来自活动的位图时,它只获取正在获取的视图图像。项目计数是正确的。 ex ... 项目数是 10,在我的回收站视图中可以看到 2 个图像,这两个图像正在保存。
这是我的活动代码
class SaveBitmap extends AsyncTask<Void, String, List<String>> {
SaveBitmap() {
}
public void onPreExecute() {
// customLoader.hide();
// customLoader.show();
}
public List<String> doInBackground(Void... voids) {
List<String> filePaths = new ArrayList<>();
RecyclerView.Adapter adapter = multiFitRecyclerView.getAdapter();
if (adapter != null){
int itemCount = adapter.getItemCount();
for (int position = 0; position<itemCount; position++){
}
}
for (int i = 0; i < multifitRecyclerViewAdapter.getItemCount(); i++) {
MultifitRecyclerViewAdapter.ViewHolder holder = (MultifitRecyclerViewAdapter.ViewHolder) multiFitRecyclerView.findViewHolderForAdapterPosition(i);
if (holder != null) {
Bitmap bitmap1 = Bitmap.createBitmap(holder.pvEditor.getWidth(), holder.pvEditor.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap1);
holder.pvEditor.draw(canvas);
try {
String filename = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date());
File file = SaveFileUtils.saveBitmapFileRemoveBg(MultifitActivity.this, bitmap1, filename, null);
if (file != null) {
filePaths.add(file.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return filePaths;
}
public void onPostExecute(List<String> filePaths) {
// customLoader.hide();
if (filePaths == null || filePaths.isEmpty()) {
Toast.makeText(getApplicationContext(), R.string.went_wrong, Toast.LENGTH_LONG).show();
return;
}
Intent i = new Intent(MultifitActivity.this, MultiShareActivity.class);
// i.putExtra("path", (ArrayList<String>) filePaths);
i.putStringArrayListExtra("path", (ArrayList<String>) filePaths);
startActivity(i);
AdsManager.showAdmobInterstitialAd(MultifitActivity.this, "PhotoEditor");
}
}
和这个适配器类的代码
public class MultifitRecyclerViewAdapter extends RecyclerView.Adapter<MultifitRecyclerViewAdapter.ViewHolder> {
ArrayList<Bitmap> selectedBitmaps;
Context context;
String selectedFilterConfig;
String selectedAdjustConfig;
private boolean isColor;
private float mScaleSize;
private Bitmap bitmapBackground;
private ArrayList<Bitmap> backgroundImgList;
public MultifitRecyclerViewAdapter(ArrayList<Bitmap> selectedBitmaps, Context context, Bitmap bitmapBackground, boolean isColor, float mScaleSize) {
this.selectedBitmaps = selectedBitmaps;
this.context = context;
this.isColor = isColor;
this.bitmapBackground = bitmapBackground;
this.mScaleSize = mScaleSize;
this.selectedAdjustConfig = "";
this.selectedFilterConfig = "";
}
public void setSelectedBitmaps(ArrayList<Bitmap> selectedBitmaps) {
this.selectedBitmaps = selectedBitmaps;
notifyDataSetChanged();
}
public void setBitmapBackground(Bitmap bitmapBackground) {
this.bitmapBackground = bitmapBackground;
notifyDataSetChanged();
}
public void setmScaleSize(float mScaleSize) {
this.mScaleSize = mScaleSize;
}
public void setColor(boolean color) {
isColor = color;
}
public void setBackgroundImgList(ArrayList<Bitmap> backgroundImgList) {
this.backgroundImgList = backgroundImgList;
notifyDataSetChanged();
}
@NonNull
@Override
public MultifitRecyclerViewAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.multifit_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MultifitRecyclerViewAdapter.ViewHolder holder, int position) {
holder.ivCover.setImageBitmap(this.selectedBitmaps.get(position));
if (isColor){
holder.ivFrame.setImageBitmap(backgroundImgList.get(position));
}else {
holder.ivFrame.setImageBitmap(bitmapBackground);
}
holder.ivCover.setScaleX(mScaleSize);
holder.ivCover.setScaleY(mScaleSize);
}
@Override
public int getItemCount() {
return selectedBitmaps.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public PhotoEditorView pvEditor;
RectangularLayout rectangularLayout;
public ImageView ivFrame, ivCover;
public ViewHolder(@NonNull View itemView) {
super(itemView);
pvEditor = itemView.findViewById(R.id.photo_editor_view);
ivFrame = itemView.findViewById(R.id.ivFrame);
ivCover = itemView.findViewById(R.id.ivCover);
rectangularLayout = itemView.findViewById(R.id.relative_layout_wrapper_photo);
}
}
}