Beziehung von THIS beim Imageadapter und AsyncTask

grafgarf

Mitglied
Hallo Zusammen....

ich suche mich gerade dummm und dämlich nach einem Fehler ... und sehe vor lauter Code schon das Programm nicht mehr ;-(

folgendes (Programm stark - aus das Wesendliche - verkürzt):


Java:
....
public Gallery gallery;

private class LongOperation extends AsyncTask<String, Void, String> {
	
	protected String doInBackground(String...params) {
		setzeBilder(); //****und das führt zum Absturz ;-(
		return null;
	}
}

public void GalleryMachen(){
	setzeBilder();	
}

public void setzeBilder(){
	gallery.setAdapter(new ImageAdapter(this));  //****hier liegt das Problem - vermutlich im "this"
}

public void GalleryAnzeigen(){	
        GalleryMachen(Bilder); //****Das funktioniert 
	new LongOperation().execute("");//****das hier nicht (s.o.)	 
}
   
public class ImageAdapter extends BaseAdapter {
    private Context myContext;
    
    String[] myRemoteImages = BildListe.split(",");
	
    public ImageAdapter(Context c) { this.myContext = c; }

    public int getCount() { return this.myRemoteImages.length; }

    public Object getItem(int position) { return position; }
    public long getItemId(int position) { return position; }
  
   public View getView(final int position, View convertView, ViewGroup parent) {
    	ImageView i = new ImageView(this.myContext);    
    	
        .........
   
    return i; }

aufgerufen wird über einen Button "GalleryAnzeigen();"

ich habe das ganze schon in viele einzelne Methoden geteilt, um das Problem einzugrenzen .... macht die Sache auf den ersten Blick etwas unübersichtlich ...

sobald ich gallery.setAdapter(new ImageAdapter(this)) über den AsyncTask aufrufe, schmiert das Prog ab ... ich denke, dass das hier an der Beziehung zum "this" liegt ... finde aber kein Workaround bzw. dreh mich schon seit Stunden im Kreis ....

brauche einen Schubs in die richtige Richtung ;-)
 

grafgarf

Mitglied
07-19 10:35:33.790: WARN/System.err(563): java.lang.IllegalStateException: Observer android.widget.AdapterView$AdapterDataSetObserver@40eaee08 was not registered.
07-19 10:35:33.790: WARN/System.err(563): at android.database.Observable.unregisterObserver(Observable.java:64)
07-19 10:35:33.790: WARN/System.err(563): at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)
07-19 10:35:33.790: WARN/System.err(563): at android.widget.AbsSpinner.setAdapter(AbsSpinner.java:102)
07-19 10:35:33.790: WARN/System.err(563): at de.meinandroid.textdateilesen.textdateilesen.setzeBilder(textdateilesen.java:767)
07-19 10:35:33.790: WARN/System.err(563): at de.meinandroid.textdateilesen.textdateilesen$LongOperation.doInBackground(textdateilesen.java:736)
07-19 10:35:33.790: WARN/System.err(563): at de.meinandroid.textdateilesen.textdateilesen$LongOperation.doInBackground(textdateilesen.java:1)
07-19 10:35:33.790: WARN/System.err(563): at android.os.AsyncTask$2.call(AsyncTask.java:252)
07-19 10:35:33.800: WARN/System.err(563): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-19 10:35:33.800: WARN/System.err(563): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-19 10:35:33.800: WARN/System.err(563): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
07-19 10:35:33.800: WARN/System.err(563): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
07-19 10:35:33.800: WARN/System.err(563): at java.lang.Thread.run(Thread.java:1020)
 

grafgarf

Mitglied
...muss wohl was damit zu tun haben, dass da nun der neue Thread (AsyncTask) auf das View eines anderen Threads (main) zugreift ... :noe:

...und mit einem Handler komm ich auch nicht ans Ziel ...:(
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Bin mit Android nicht wirklich vertraut, aber ... wenn das ein Threading-Problem ist, könnte man das dann nicht vielleicht(!) lösen, indem man das Hinzufügen des Adapters mit einer der Methoden von Painless Threading | Android Developers (also View.post(Runnable) oder so...) auf den UI-Thread legt?
Ist wirklich nur ins Blaue geraten...
 

schlingel

Gesperrter Benutzer
Folgende Fragen:
1. Warum machst du das in einem eigenen Task? Wenn du die Daten für den Adapter dort initialisieren willst dann mach das auch aber du darfst auf den UI-Thread nur in den postExecute und updateProgress Methoden zugreifen.
2. this bezieht sich wirklich auf den Async-Task. Da hast du zwei Möglichkeiten: per Methode den Context reinkriegen den du haben möchtest oder das Design generell überdenken.

Ich glaube es würde auch helfen wenn du erklärst was genau du da eigentlich machen möchtest.
 

grafgarf

Mitglied
eigentlich wollte ich, dass ein Ladebalken kommt, wenn ich meine Datenbak durchforste und die Bilder zur Ansicht in die Gallery schubse ...

Lösung (wobei ich bei Gelegenheit mal dem eigentlichen Problem auf den Grund gehen muss - hier geht es dann aber nur ums Prinzip) ... nunja ... der Code war jedenfalls zum besagten Zeitpunkt noch unoptimiert - und bei besagten Abfragen gingen schon mal 30 Sekunden ins Land ... es wäre also ein Progressbar schon angebracht gewesen ... jetzt habe ich jedenfalls den Code so weit optimiert, dass die Antwortzeit im Milisekundenbereich liegt ... Progressbar also vollkommen fehl am Platz ...

werde aber diesbezüglich am Ball bleiben (für zukünftige Probleme)
 

schlingel

Gesperrter Benutzer
Ich verwende in solchen Fällen immer einen AsyncTask. Da kannst du im preExecute den Warte-Dialog mit Progressbar starten, im doInBackground deine Daten fetchen und im postExecute den Dialog schließen um die UI wieder frei zu geben.

Ein Beispiel findet man hier: AsyncTask für Serverzugriff
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Android Löschfunktion beim Wischen Android & Cross-Platform Mobile Apps 10
W Rand ändern beim ImageView bei Picasso Android & Cross-Platform Mobile Apps 1
Arif Android Android Studio: Fehler beim Einbinden fremder Bibliothek? Android & Cross-Platform Mobile Apps 2
L App stürtzt ab beim öffnen Android & Cross-Platform Mobile Apps 1
JavaWolf165 Android Fehler beim Speichern/Downloaden einer Datei Android & Cross-Platform Mobile Apps 2
S Android Probleme beim Verbinden mit einer HTTPS Seite Android & Cross-Platform Mobile Apps 4
M Android Fehler beim Parsen. Android & Cross-Platform Mobile Apps 29
V Android Fehlermeldung beim Öffnen von Eclipse nach Installation der Android Erweiterung Android & Cross-Platform Mobile Apps 4
M Error beim drücken der Zurück-Taste am Handy Android & Cross-Platform Mobile Apps 2
S Fehler beim Textdatei einlesen!? Android & Cross-Platform Mobile Apps 7
A Fehlermeldung beim ändern der ViewGroup. Android & Cross-Platform Mobile Apps 6
H Buttons färben sich mit, beim Hintergrund ändern Android & Cross-Platform Mobile Apps 3
A Mehrere Fehler beim Compilieren Android & Cross-Platform Mobile Apps 4
G Problem beim Rendern von 3D-Objekt Android & Cross-Platform Mobile Apps 0
L Android OutOfMemory beim erneuten Starten der App Android & Cross-Platform Mobile Apps 2
N Android Retain Dialog verschwindet beim drehen Android & Cross-Platform Mobile Apps 4
B Android GameLoopThread stürzt beim 2ten start der App ab? Android & Cross-Platform Mobile Apps 4
K Nullpointer beim Löschen von Datenbankeintrag, je nachdem wo der Befehl steht Android & Cross-Platform Mobile Apps 5
S Java ME Exception beim Abspielen von Musik Android & Cross-Platform Mobile Apps 6
G Fehler beim Import "Invalid project description" Android & Cross-Platform Mobile Apps 2
G unterschiedliches Verhalten beim Installieren des App auf dem Smartphone Android & Cross-Platform Mobile Apps 3
K Android schwarzer Bildschirm beim Rendern von Text und Dreiecken Android & Cross-Platform Mobile Apps 9
DaniSahne96 Problem beim Appdebuggen auf Smartphone Android & Cross-Platform Mobile Apps 3
P Android Problem beim Widget - Denkfehler ? Android & Cross-Platform Mobile Apps 2
A Fehler beim Starten eines Intents - alles in einer Klasse funktioniert... Android & Cross-Platform Mobile Apps 4
J Android Verhalten beim Hinzufügen neuer Views? Android & Cross-Platform Mobile Apps 6
S Android Fehler beim Anzeigen meines Apps auf Galaxy Tab Android & Cross-Platform Mobile Apps 4
V [Java] und [JavaME] ClientServer StreamConnection . Problem beim lesen / schreiben Android & Cross-Platform Mobile Apps 2
R Ein Problem beim ausführen von folgendem Quelltext Android & Cross-Platform Mobile Apps 11
N Error in HTTP operation beim KXML parsen Android & Cross-Platform Mobile Apps 7
A Problem beim Subtrahieren eines Double von einem Double Android & Cross-Platform Mobile Apps 5
G fehldermeldung beim klicken auf "build" Android & Cross-Platform Mobile Apps 8
L SecurityException beim lesen/schreiben eine Datei Android & Cross-Platform Mobile Apps 7
F Problem beim Erstellen der Jar File Android & Cross-Platform Mobile Apps 4
S createPlayer beim Entwickeln Android & Cross-Platform Mobile Apps 6

Ähnliche Java Themen

Neue Themen


Oben