Cześć.
Tak jak w temacie, podczas próby pisania swojej apki mam problem, że gdy (kody poniżej ;) ) usuwam w RecyclerAdapterze pojdynczy obiekt (zdjecie) wszystko początkowo wygląda dobrze (dana "karta" reprezentująca zdjęcie znika) po czym po załadowaniu od nowa fragmentu z listą dane zdjęcie(karta) pojawia się ponownie. Zdjęcia przechowuje według takiej logiki:
- same pliki ze zdjęciami przechowuje w katalogu aplikacji (tym który jest odinstalowany i czyszczony przy odinstalowywaniu -> może w tym jest problem?)
- w bazie danych przechowuję ścieżkę do tego zdjęcia wraz z dodatkowymi informacjami
-Glid'em ładuje zdjęcia do imageView
-informacje o zdjęciach przechowuje na liście w formie obiektów klasy MyFunnyImg
-mam ContentProvidera
-chyba niczego nie pominąłem bo miałem trochę przerwy od tego kodu -> jak coś to proszę pisać to dokleję więcej kodu :)
Poniżej "robocze" kody:
// metoda delete z ContentProvidera
@Override
public int delete(@NonNull Uri uri, @Nullable String where, @Nullable String[] whereArgs) {
int numbersOfRowsDeleted=0;
switch (uriMatcher.match(uri)) {
case ONE_PIC:
numbersOfRowsDeleted=dbHelper.getWritableDatabase().delete(DatabaseDescription.Picture.TABLE_NAME_,
DatabaseDescription.Picture._ID+"="+uri.getLastPathSegment(),whereArgs);
break;
default:
unsupportedOperation();
}
if(numbersOfRowsDeleted>0){
getContext().getContentResolver().notifyChange(uri,null);
}
return numbersOfRowsDeleted;
}
// logika usuwania ppjdeynczego zdjecia
private boolean onSingleMenuItemClick(MenuItem item,ImageView imageView,int position){
int id=item.getItemId();
switch (id){
case R.id.share:
// instructions
break;
case R.id.more_info:
// instructions
break;
case R.id.delete_img:
deleteImg(position);
break;
default:
//instructions
}
return true;
}
private void deleteImg(int position){
removeImgFile(argsToShow.get(position).getFileName());
deleteFromDatabase(position);
argsToShow.remove(position);
//notifyDataSetChanged();
// notifyItemRemoved(position);
notifyItemRangeChanged(position,argsToShow.size());
}`private void removeImgFile(String fName){
String root=null;
try {
root = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES).toString();
}catch(NullPointerException ex){
ex.printStackTrace();
Log.e("Error","NullPointerException while deleting BitMap");
}
File dir=new File(root+"/saved_images");
File file=new File(dir,fName);
}
"Na piechotę" wybadałem (przez wartości zwracane przez metody delete dla BD i pliku że wszystko powinno ładnie się skasować) a mimo wszystko obrazek nadal się pojawia -> może coś z Glide ?
- wersje z powiadamianiem "słuchaczy" -> notify testowałem i zawsze taki sam efekt, ale zostawia w formie komentarzy.
Dziękuję za wszystkie konstruktywne sugestie.