Wie kann ich von einem asynctask, welches über dem UI-thread ausgeführt wird, einen arrayList an eine ListActitvity übermitteln? Ich bekomme stets nullpointerException (keine ahnung warum). Habe mir inzwischen alles genau angeschaut und finde den Fehler einfach nicht.
die onPostExecute-Methode des AsyncTasks sieht so aus:
public class MainActivity {
.....
PlayListActivity playListActivity;
.....
private class CreateSongList extends AsyncTask<List<Integer>, Void, ArrayList<String>> {
.....
@Override
protected void onPostExecute(ArrayList<String> result) {
for(int j = 0; j < result.size(); j++){
playListActivity.playlist.add(result.get(j));
}
}
}
Alles anzeigen
habe auch über den log eintrag result gecheckt : ist ein Stringarray, also alles ok.
die ListActivity:
public class PlayListActivity extends ListActivity {
MainActivity mainActivity;
public ArrayList<String> playlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(playlist != null) {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, playlist);
setListAdapter(adapter);
}
else {
Toast.makeText(getApplicationContext(), "Zur Zeit keine Liste verfügbar", Toast.LENGTH_LONG).show();
}
}
}
Alles anzeigen
Fehelrmeldung:
04-23 17:45:14.863: E/AndroidRuntime(11116): FATAL EXCEPTION: main
04-23 17:45:14.863: E/AndroidRuntime(11116): java.lang.NullPointerException
04-23 17:45:14.863: E/AndroidRuntime(11116): at com.example.testproject.MainActivity$CreateSongList.onPostExecute(MainActivity.java:231)
04-23 17:45:14.863: E/AndroidRuntime(11116): at com.example.testproject.MainActivity$CreateSongList.onPostExecute(MainActivity.java:1)
04-23 17:45:14.863: E/AndroidRuntime(11116): at android.os.AsyncTask.finish(AsyncTask.java:631)
04-23 17:45:14.863: E/AndroidRuntime(11116): at android.os.AsyncTask.access$600(AsyncTask.java:177)
04-23 17:45:14.863: E/AndroidRuntime(11116): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
04-23 17:45:14.863: E/AndroidRuntime(11116): at android.os.Handler.dispatchMessage(Handler.java:99)
04-23 17:45:14.863: E/AndroidRuntime(11116): at android.os.Looper.loop(Looper.java:137)
04-23 17:45:14.863: E/AndroidRuntime(11116): at android.app.ActivityThread.main(ActivityThread.java:4921)
04-23 17:45:14.863: E/AndroidRuntime(11116): at java.lang.reflect.Method.invokeNative(Native Method)
04-23 17:45:14.863: E/AndroidRuntime(11116): at java.lang.reflect.Method.invoke(Method.java:511)
04-23 17:45:14.863: E/AndroidRuntime(11116): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
04-23 17:45:14.863: E/AndroidRuntime(11116): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
04-23 17:45:14.863: E/AndroidRuntime(11116): at dalvik.system.NativeStart.main(Native Method)
Alles anzeigen
Was mache ich falsch??
Und eine allgemeine Verständnisfrage: Wieviele lists sollte eine anwendung höchstens erstellen? gibt es dafür irgendwelche speziellen regeln oder grenzbereiche, was die performance angeht? Also ab welcher Anzhal es einfluß auf die performance hätte. Destor mehr lists, desto mehr speicher also mehr aufwand -> outofMemory??
Oder ist das schlicht egal!?