как обновить ArrayList <Bitmap>после удаления фото? - PullRequest
0 голосов
/ 28 января 2020

Итак, я заполняю свой растровый ArrayList (фотографии), добавляя изображения через галерею и фотографии с камер, а затем сохраняю массив имен в базу данных и изображения в хранилище. В классе ImageAdapter, если я удаляю изображение из списка массивов, то без сохранения списка оно успешно удаляет изображение из хранилища, но если я нажимаю кнопку сохранения, то оно не удаляет изображение из моего внутреннего хранилища телефона в качестве растрового изображения ArrayList ( фото) не обновляет. Как я могу обновить свой Arraylist of Bitmap в основном классе (фрагмент) перед сохранением?

Функция сохранения

public void saveNotes() {

   if (!Modify) {
       if (titulo.getText().toString().length() > 0) {
           if (!base.buscarNota(titulo.getText().toString())) {
               String almostSameText = Html.toHtml(texto.getEditableText()).toString();
               if (bp != null) {
                   Util.saveToInternalStorage(context, bp, ArrayImageName, photos);
                   Notas notas = new Notas(titulo.getText().toString().trim(), almostSameText, getFecha(), stringForArray);
                   base.insertarNota(notas);
               } else {
                   Notas notas = new Notas(titulo.getText().toString().trim(), almostSameText, getFecha(), null);
                   base.insertarNota(notas);
               }
               getActivity().onBackPressed();
           } else {
               Alerta alerta = new Alerta(context, context.getResources().getString(R.string.title_existente));
           }
       } else {
           Alerta alerta = new Alerta(context, context.getResources().getString(R.string.title_vacio));
       }
   } else {
       String almostSameText = Html.toHtml(texto.getEditableText()).toString();
       if (bp != null) {
           Util.saveToInternalStorage(context, bp, ArrayImageName, photos);
           base.modificarNota(titulo.getText().toString().trim(), almostSameText, stringForArray, id);
       } else {
           base.modificarNota(titulo.getText().toString().trim(), almostSameText, null, id);
       }
       getActivity().onBackPressed();
       getActivity().overridePendingTransition(R.anim.enter_from_left, R.anim.exit_from_right);
   }

}

my ImageAdapter Удалить класс битовых изображений

public void showDeletePictureDialog(){
    AlertDialog.Builder builder;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        builder = new AlertDialog.Builder(Imagecontext);
    } else {
        builder = new AlertDialog.Builder(Imagecontext);
    }
    builder.setTitle("Delete photo")
            .setMessage("Are you sure you want to delete this photo?")
            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // continue with delete
                    ImageFileArrayAfterDelete = EditorFragment.loadImageStrings;
                    String folder_main = "MyImages";
                    File f = new File(Environment.getExternalStorageDirectory().toString(), folder_main);
                    z = new File(f.toString(), Uri.parse(String.valueOf(ImageFileArrayAfterDelete.get(currentPosition))) + ".jpg");
                    ImageName = z.getName();
                    Log.d("TAG_", "Position is: " + currentPosition + " File name is: " + ImageName);
                    bpAdapter.remove(currentPosition);
                    ImageFileArrayAfterDelete.remove(currentPosition);
                    toSingleString();
                    notifyItemRemoved(currentPosition);
                    notifyItemRangeChanged(currentPosition, bpAdapter.size());
                    z.delete();
                }
            })

1 Ответ

0 голосов
/ 28 января 2020

Вы можете сделать это, просто удалив элемент из списка

    myList.removeAt(position)
    myAdapter.notifyDataSetChanged()
...