Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Eintrag kann nicht aus Gallery entfernt werden

Das Thema "Eintrag kann nicht aus Gallery entfernt werden" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 11.10.2010, 12:45   #1 (permalink)
Junior Mitglied
 
Benutzerbild von Gibbsnich

Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard Eintrag kann nicht aus Gallery entfernt werden

Hallo,

mein Programm bietet unterschiedliche Views an, die über eine Gallery ausgewählt werden. Die notwendigen Daten dafür sind in einer eigenen Klasse definiert und stehen als Liste in meinem Adapter:
Code:
public class GalleryData extends BaseAdapter {
    int mGalleryItemBackground;
    private Context mContext;
    private List<GalleryRec> galData = new LinkedList<GalleryRec>();
Das Löschen geht so:
Code:
    public Boolean deleteGalleryData(Integer position) {
        if (BIS_Common.myDataBase != null && position >= 0 && position < galData.size()) { 
            BIS_Common.myDataBase.deleteDBSatz(galData.get(position).getDbIndex());
            this.galData.remove(position);
            return true;
        } else {
            return false;
        }
    }
Der Debugger beweist, dass die DB ungleich NULL ist und die Bedinungen alle erfüllt sind, damit der Code überhaupt erreicht wird. Der Datensatz in der DB wird offensichtlich gelöscht, aber der Gallery-Eintrag bleibt stehen !
Wenn ich darauf klicke, kann die passende View nicht gezeigt werden (DB-Eintrag ist ja futsch), aber der Eintrag verschwindet nicht.

Der Aufruf des Löschens:
Code:
                BIS_Common.myGalleryData.deleteGalleryData(galItem);
                BIS_Common.myGallery.invalidate();
BIS_Common.myGallery.setAdapter(BIS_Common.myGalleryData);
                BIS_Common.myGallery.invalidate();
Was fehlt hier noch ??

Ein letzter, verzweifelter Test offenbart mir gearde, dass ein Liste.clear ebensowenig geht.
Auch hier wird zwar dieDB geleert, die Gallery bleibt aber in vollem Umfang erhalten.

HILFE!!
Gibbsnich ist offline   Mit Zitat antworten
Alt 11.10.2010, 13:11   #2 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Musst du nicht der View noch mitteilen, das sich die Daten geändert habven (adapter.notifyDataSetChanged())?
Oder hast du das schon getan und nur nicht mit gepostet?

Zumindest wenn der Adapter ein CursorAdapter ist, was man hier nicht sehen kann.
Unicate ist gerade online   Mit Zitat antworten
Alt 11.10.2010, 13:24   #3 (permalink)
Junior Mitglied
 
Benutzerbild von Gibbsnich

Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Hallo Unicate,

schade, das war es leider nicht.
Es ist auch kein Cursoradapter, sondern nur eine Datenstruktur:
Code:
class GalleryRec {
    protected Integer dbIndex = 0;
    protected Integer typ = 0;
    protected String titel = "";
    public GalleryRec(Integer dbIndex, Integer typ, String titel) {
        super();
        this.dbIndex = dbIndex;
        this.typ = typ;
        this.titel = titel;
    }
    public Integer getDbIndex() {
        return dbIndex;
    }
    public Integer getTyp() {
        return typ;
    }
    public String getTitel() {
        return titel;
    }
}
Der Adapter verwaltet diese Klasse in einer Liste:
Code:
private List<GalleryRec> galData = new LinkedList<GalleryRec>();
Der Vollständigkeit halber hier noch die Methode getView(), die letztlich einen 2-zeiligen Text ausgibt:
Code:
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView v = new TextView(mContext);
        int breite;
        Paint p = new Paint();
        GalleryRec gRec = null;
        String ausgabe = "" + position;
        if (position < galData.size()) {
            gRec = galData.get(position);
            if (gRec != null) {
                ausgabe = BIS_Common.getAnzeigeTyp(gRec.getTyp()) + "\n" +
                          gRec.getTitel();
            }
        }

        v.setBackgroundResource(mGalleryItemBackground);
        v.setText(ausgabe + " " + xx);
        v.setTextColor(0xffffffff);
        breite = Math.round(p.measureText(ausgabe));
        if (breite == 0) {
            breite = 100;
        }
        v.setLayoutParams(new Gallery.LayoutParams(breite + 10, 64));
        v.setGravity(Gravity.CENTER_HORIZONTAL);
        //v.setPadding(10, 0, 10, 0);

        return v;
    }
Gibbsnich ist offline   Mit Zitat antworten
Alt 11.10.2010, 15:28   #4 (permalink)
Junior Mitglied
 
Benutzerbild von Gibbsnich

Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Ich stelle gerade fest, dass der Aufruf "galData.remove(position)" false liefert !
Dann ist klar, dass der Eintrag weiterhin sichtbar ist.
Aber warum ist das so ?
Wenn ich die Liste mit galData.add(new GalleryRec()) erweitern kann, warum scheitert dann ein remove ?
Gibbsnich ist offline   Mit Zitat antworten
Alt 11.10.2010, 15:47   #5 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Achso, die Objekte in deiner GridView werden wieder verwendet.

d.h. Wenn z.B. item an position 1 aus dem Bild nach oben verschwindet, dann wird es unten wieder weiter verwendet. (halt nur überschrieben, deswegen auch die new-View-sache bei den Adaptern)

du solltest warscheinlich statt remove(position) etwas anderes verwenden.

remove(long id) wäre besser. Wenn du die OnItemClick Methode aus der GridView nutzt sollte die id auch einfach zu bekommen sein.

Geändert von Unicate (11.10.2010 um 15:50 Uhr)
Unicate ist gerade online   Mit Zitat antworten
Alt 11.10.2010, 15:53   #6 (permalink)
Junior Mitglied
 
Benutzerbild von Gibbsnich

Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Nein, kein Recycling !
Ich möchte einfach nur den aktiven Gallery-Eintrag entfernen, die Seiten davor und danach sollten bleiben.

Ich erwähne das add() nur, weil ich bisher die Gallery so erweitere. Bei jedem neuen Dialog wird ein neuer Eintrag in die Gallery geschrieben.
So weit, so gut.

Jetzt soll einfach nur ein Eintrag aus der Liste entfernt werden.
Ich habe das sowohl mit ArrayList als auch mit LinkedList probiert, beides scheitert.
Gibbsnich ist offline   Mit Zitat antworten
Alt 11.10.2010, 16:09   #7 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Ich bin mir grad nicht sicher ob wir aneinander vorbei reden.

Überprüf doch mal ob die Positionen überhaupt stimmen, die du löschen willst.
Unicate ist gerade online   Mit Zitat antworten
Alt 11.10.2010, 16:17   #8 (permalink)
Junior Mitglied
 
Benutzerbild von Gibbsnich

Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard AW: Eintrag kann icht aus Gallery entfernt werden

Hab ich gerade gemacht. Meine Position entspricht der ID in der Liste und ist vom Typ integer.
Ich sehe im Objektinspektor, dass meine Liste 3 Einträge hat, versuche remove(1) und erhalte das Ergebnis false

Kann es damit zu tun haben, dass meine Liste aus einer eigenen Klasse besteht und dass ich dann das Löschen auch noch programmieren muss ?

Ich dachte, das Entfernen aus der Liste reicht und der Garbage Collector kümmert sich um die nicht mehr benötigte Klasse.
Gibbsnich ist offline   Mit Zitat antworten
Antwort

Stichworte
gallery, liste, listeintrag löschen

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Welche APPS dürfen entfernt werden - ROOT coyote_f Root / Hacking / Modding für Motorola Milestone 413 28.03.2012 18:38
G1 kann mit jeder Taste aus dem Standby geholt werden chewbacca T-Mobile G1 Forum 4 18.04.2010 09:38
Südkorea: Games werden aus dem Market entfernt! Chris0504 Android Spiele 1 06.04.2010 20:58
Südkorea: Games werden aus dem Market entfernt! Chris0504 Android News 0 06.04.2010 20:53
Google Konto kann nicht entfernt werden / Import Kontakte ohne Googlemail Andro-Idiot Motorola Milestone Forum 2 27.11.2009 11:35




Du liest gerade: "Eintrag kann nicht aus Gallery entfernt werden" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.