- Forum-Beiträge: 2.492
27.07.2014, 12:25:52 via Website
27.07.2014 12:25:52 via Website
Hallo,
ich benötige einmal eure Hilfe da meine Umsetzung mir etwas zu lange dauert.
Und zwar habe ich zwei Listen mit drawables drin. Eine ist die drawableListeLinks und die andere die drawableListeRechts.
In jede können bis zu 20 Drawables hinzugefügt werden.
Die drawables werden in einem ImageView (eins Links eins Rechts) angezeigt und durch ein einfaches Klicken auf das ImageView wird das nächste Bild aus der Liste angezeigt.
Mit einem '-' Button kann das aktuell angezeigte Bild/Drawable aus der Liste gelöscht werden. (Mit einem '+' können neue drawables zu der Liste hinzugefügt werden).
Die drawables speichere ich im internen Speicher in einem Ordner "linkenBilder"/"rechtenBilder" mit folgender Methode:
private String saveToInternalSorage(Bitmap bitmapImage, int i, boolean b){
File mypath = null;
if(b){
mypath=new File(linkenBilder,""+i);//Ordner linkenBilder + Counter
} else if(!b){
mypath=new File(rechtenBilder,""+i);//Ordner rechtenBilder + Counter
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
//Bild wird über den FileOutputStream in dem Path gespeichert
bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Das klappt alles einwandfrei nur habe ich ein Problem wenn ich ein Bild löschen will, da mir das alles zu lange dauert.
Und zwar mache ich das folgendermaßen
z.B. 15 Bilder sind in der linken Liste und Bild 9 wird gelöscht. So geht dann meine App vor:
- das drawable 9 wird aus der Liste gelöscht (dauert denke ich mal nicht lange)
- dann werden alle Bilder im Ordner linkenBilder ab der Zahl 9 gelöscht (das könnte lange dauern, Methode steht unten)
- dann werden alle drawables der Liste ab Zahl 9 im Ordner linkenBilder gespeichert (dann ist das gewünschte Bild das gelöscht werden soll ja nicht mehr dabei) (das könnte auch lange dauern, Methode steht oben)
private void deleteInternalStorage(boolean b, int counter) {
// TODO Auto-generated method stub
if(b){
if(linkenBilder.isDirectory()){
String[] bilder = linkenBilder.list();
if(bilder != null){
for(int i = counter; i < bilder.length; i++){
new File(linkenBilder, bilder[i]).delete();
}
}
}
} else if(!b){
if(rechtenBilder.isDirectory()){
String[] bilder = rechtenBilder.list();
if(bilder != null){
for(int i = counter; i < bilder.length; i++){
new File(rechtenBilder, bilder[i]).delete();
}
}
}
}
}
Ich vermute das Problem ist, dass das gewünschte Bild gelöscht wird, aber auch die folgenden und dann die folgenden Bilder wieder gespeichert werden, sodass das gewünschte Bild weg ist.
Ich hab das jetzt so gemacht, damit der counter i der beim speichern hinten angehängt wird, nicht irgendwann unendlich groß wird bei ständigem speichern löschen und so weiter.
Habt ihr eine Idee, wie ich das alles etwas beschleunigen kann?
— geändert am 27.07.2014, 12:29:50
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.