2014-09-22 2 views
-1

온라인에서 Rss 피드를 가져올 때까지 내 앱이 중단되지 않습니다. 나는 그것을 작동시키는 법을 알 필요가있다. 여기 비동기 메서드입니다. 어떻게 작동합니까?

내 활동 코드 :

여기
import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 
import android.widget.ListView;  
import java.util.List;  

public class VehicleRecall extends Activity { 

    // A reference to the local object 
    private VehicleRecall local; 
    private Thread thread;   

    //method creates application view 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate (savedInstanceState); 
     // Set view 
     setContentView (R.layout.activity_vehiclerecall); 

     //Set reference to this activity 
     local = this; 

     GetRSSDataTask task = new GetRSSDataTask(); 

     //Start download RSS task 
     task.execute ("http://www-odi.nhtsa.dot.gov/rss/feeds/rss_recalls_V.xml");   
    } 

    private class GetRSSDataTask extends AsyncTask <String, Void, List<RssItem> > { 

     @Override 
     protected List<RssItem> doInBackground(String... urls) {    

      try { 
       // Create RSS reader 
       RssReader rssReader = new RssReader (urls[0]); 

       // Parse RSS, get items 
       return rssReader.getItem(); 

      } catch (Exception e) { 
       Log.e ("CANVehicleRecall", e.getMessage()); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(List<RssItem> result) { 

      //Get a ListView from main view 
      ListView canItems = (ListView) findViewById (R.id.recallList); 

      // Create a list adapter 
      ArrayAdapter<RssItem> adapter = 
      new ArrayAdapter<RssItem(local, android.R.layout.simple_list_item_1, result); 

      // Set list adapter for the ListView 
      canItems.setAdapter (adapter); 

      // Set list view item click listener 
      canItems.setOnItemClickListener (new ListListener (result, local)); 
     } 
    } 
} 

활동에 내 레이아웃은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


<ProgressBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:indeterminate="false" 
    android:max="12" 
    android:padding="10dp"/> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/recallList" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 


</LinearLayout> 

그리고 내 로그 캣 :

java.lang.NullPointerException 
     at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330) 
     at android.widget.ListView.setAdapter(ListView.java:480) 
     at com.customerautomotivenetwork.VehicleRecall$GetRSSDataTask.onPostExecute(VehicleRecall.java:70) 
     at com.customerautomotivenetwork.VehicleRecall$GetRSSDataTask.onPostExecute(VehicleRecall.java:39) 
     at android.os.AsyncTask.finish(AsyncTask.java:632) 
     at android.os.AsyncTask.access$600(AsyncTask.java:177) 
     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5086) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 

이 문제에 어떤 도움?

+0

이 채워 집니까? – Raghunandan

+0

뭔가가 null입니다. 그렇지 않은지 확인하십시오. – 323go

+0

결과가 채워지지 않습니다. 무엇이 null인지 확인하려고합니다. – user3900101

답변

0

onPostExecute 메서드에서 result == null 인 상황을 확인해야합니다. 예외가있는 경우 현재 doInBackground 메서드가 null을 반환합니다. 또한 rssReader.getItem()은 잠재적으로 null을 반환 할 수 있습니다.

관련 문제