2012-02-25 4 views
0

Я использую AsyncTask, чтобы получить данные, а затем загрузить их в ListView. Мой код:Как загрузить ListView после завершения работы AsyncTask?

AsyncTaskTwitterFeeds asyncTaskTwitterFeeds = new AsyncTaskTwitterFeeds(TwitterFeedsActivity.this); 
    asyncTaskTwitterFeeds.execute(""); 
    loadList(); 

В приведенной выше коде, как AsyncTask выполняется, поток, приходит к loadlist() методу и аварийному завершению работы программы. Я обнаружил, что массив, который используется в Adapter, все еще заселен. Я хочу знать, как я могу провести один раз, когда выполняется AsyncTask, и только тогда, когда он будет завершен, поток должен перейти к методу loadlist(). Здесь ошибка LogCat:

02-25 18:50:25.879: E/AndroidRuntime(19851): FATAL EXCEPTION: main 
02-25 18:50:25.879: E/AndroidRuntime(19851): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cubix.twitterfeed/com.cubix.twitterfeed.TwitterFeedsActivity}: java.lang.NullPointerException 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.ActivityThread.access$1500(ActivityThread.java:132) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.os.Looper.loop(Looper.java:143) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.ActivityThread.main(ActivityThread.java:4196) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at java.lang.reflect.Method.invokeNative(Native Method) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at java.lang.reflect.Method.invoke(Method.java:507) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at dalvik.system.NativeStart.main(Native Method) 
02-25 18:50:25.879: E/AndroidRuntime(19851): Caused by: java.lang.NullPointerException 
02-25 18:50:25.879: E/AndroidRuntime(19851): at java.util.Arrays$ArrayList.<init>(Arrays.java:47) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at java.util.Arrays.asList(Arrays.java:169) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:125) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at com.cubix.twitterfeed.TwitterAdapter.<init>(TwitterAdapter.java:17) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at com.cubix.twitterfeed.TwitterFeedsActivity.loadList(TwitterFeedsActivity.java:48) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at com.cubix.twitterfeed.TwitterFeedsActivity.onCreate(TwitterFeedsActivity.java:30) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) 
02-25 18:50:25.879: E/AndroidRuntime(19851): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780) 
02-25 18:50:25.879: E/AndroidRuntime(19851): ... 11 more 
+0

@Ankit, done ... – kaibuki

ответ

5

AsyncTask имеет метод onPostExecute(), который выполняется на главном UI потоке послеAsyncTask завершил свою работу в методе doInBackground(). Вы можете использовать этот метод для заполнения списка, если вызывается loadList(), чтобы заполнить список результатами из AsyncTask.

+0

Да, это так, как мне это удается, но я пытаюсь найти способ сделать это в основной деятельности, а не в onPostExecute(). – kaibuki

Смежные вопросы