Philip M.
- Forum-Beiträge: 90
29.11.2011, 11:21:27 via Website
29.11.2011 11:21:27 via Website
Guten Morgen,
ich habe folgendes Problem. ich habe mir einen AsyncTask erstellt um XML-Daten asynchron zu laden um dem ewigen ruckeln meiner App vor zu beugen. Mein AsyncTask sieht wie folgt aus:
Aufgerufen wird das ganze dann wie folgt mit einem XMLLoaderAdapter als InnerClass welches ein von mir selbst geschriebenes Interface ist welches nur die Methode "loadXMLData(String... params)" enthält.
Bei der Variable "view" handelt es sich um eine Activity und die Methode view.getTextViewPLZ() gibt einen AutoCompleteTextView zurück. Nun bekomme ich dir Fehlermeldung wie ich sie in der Überschrift stehen habe und verstehe nicht wieso, da meines wissens nach der AsnyTask doch extra dafür gemacht wurde Asynchron die UI zu ändern. Wenn ich Looper.prepare() aufrufe bekomme ich zwar keine Fehlermeldung, allerdings passiert auch nichts in meiner UI. =/ Hat vielleicht jemand eine Idee? Ich denke ich habe hier grundsätzlich etwas falsch verstanden oder Irre ich mich?
ich habe folgendes Problem. ich habe mir einen AsyncTask erstellt um XML-Daten asynchron zu laden um dem ewigen ruckeln meiner App vor zu beugen. Mein AsyncTask sieht wie folgt aus:
1import java.util.ArrayList;
2
3import de.micpool.orderdrinks.security.DataPoll;
4import android.os.AsyncTask;
5import android.os.Looper;
6
7public class AsyncXMLLoader extends AsyncTask<String, Void, Void> {
8
9 private XMLLoaderAdapter loader = null;
10
11
12 public static AsyncXMLLoader getInstance(XMLLoaderAdapter loader) {
13 return new AsyncXMLLoader(loader);
14 }
15
16
17 private AsyncXMLLoader(XMLLoaderAdapter loader) {
18 this.loader = loader;
19 }
20
21
22 @Override
23 protected Void doInBackground(String... params) {
24 if(this.loader == null)
25 return null;
26
27 loader.loadXMLData(params);
28 return null;
29 }
30}
2
3import de.micpool.orderdrinks.security.DataPoll;
4import android.os.AsyncTask;
5import android.os.Looper;
6
7public class AsyncXMLLoader extends AsyncTask<String, Void, Void> {
8
9 private XMLLoaderAdapter loader = null;
10
11
12 public static AsyncXMLLoader getInstance(XMLLoaderAdapter loader) {
13 return new AsyncXMLLoader(loader);
14 }
15
16
17 private AsyncXMLLoader(XMLLoaderAdapter loader) {
18 this.loader = loader;
19 }
20
21
22 @Override
23 protected Void doInBackground(String... params) {
24 if(this.loader == null)
25 return null;
26
27 loader.loadXMLData(params);
28 return null;
29 }
30}
Aufgerufen wird das ganze dann wie folgt mit einem XMLLoaderAdapter als InnerClass welches ein von mir selbst geschriebenes Interface ist welches nur die Methode "loadXMLData(String... params)" enthält.
1AsyncXMLLoader.getInstance(new XMLLoaderAdapter() {
2
3 @Override
4 public Object loadXMLData(String... params) {
5 ArrayList<String> ls = DataPoll.getInstance().getPLZList(params[0]);
6 ArrayAdapter<String> adapter = new ArrayAdapter<String>(view, android.R.layout.simple_dropdown_item_1line, ls);
7 view.getTextViewPLZ().setAdapter(adapter);
8 view.getTextViewPLZ().showDropDown();
9 return null;
10 }
11
12 }).execute(s.toString());
2
3 @Override
4 public Object loadXMLData(String... params) {
5 ArrayList<String> ls = DataPoll.getInstance().getPLZList(params[0]);
6 ArrayAdapter<String> adapter = new ArrayAdapter<String>(view, android.R.layout.simple_dropdown_item_1line, ls);
7 view.getTextViewPLZ().setAdapter(adapter);
8 view.getTextViewPLZ().showDropDown();
9 return null;
10 }
11
12 }).execute(s.toString());
Bei der Variable "view" handelt es sich um eine Activity und die Methode view.getTextViewPLZ() gibt einen AutoCompleteTextView zurück. Nun bekomme ich dir Fehlermeldung wie ich sie in der Überschrift stehen habe und verstehe nicht wieso, da meines wissens nach der AsnyTask doch extra dafür gemacht wurde Asynchron die UI zu ändern. Wenn ich Looper.prepare() aufrufe bekomme ich zwar keine Fehlermeldung, allerdings passiert auch nichts in meiner UI. =/ Hat vielleicht jemand eine Idee? Ich denke ich habe hier grundsätzlich etwas falsch verstanden oder Irre ich mich?
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.