| |||||||
Das Thema "Eintrag kann nicht aus Gallery entfernt werden" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Junior Mitglied Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
| 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>(); 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;
}
} 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(); 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!! |
| | |
| | #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
|
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. |
| | |
| | #3 (permalink) |
| Junior Mitglied Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
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;
}
} Code: private List<GalleryRec> galData = new LinkedList<GalleryRec>(); 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;
} |
| | |
| | #4 (permalink) |
| Junior Mitglied Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
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 ? |
| | |
| | #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
|
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) |
| | |
| | #6 (permalink) |
| Junior Mitglied Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
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. |
| | |
| | #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
|
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. |
| | |
| | #8 (permalink) |
| Junior Mitglied Registriert seit: 22.06.2010
Beiträge: 37
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
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. |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| 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 |