2016-08-10 3 views
1

내가 URL에서 JSON을 구문 분석하려고하지만 그것은 작동하지 않습니다 안드로이드 목록보기에널 개체 참조 ..

오류가없는 42

MainActivity$ReadJSON.onPostExecute(MainActivity.java:71) 
    at com.ac.app.MainActivity$ReadJSON.onPostExecute(MainActivity.java:42) 

여기 코드

에게 없습니다에는 72 라인에게 줄없는 경우
public class MainActivity extends AppCompatActivity { 

    ArrayList<Video> arrayList; 
    ListView lv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     arrayList = new ArrayList<>(); 
     lv = (ListView) findViewById(R.id.listView); 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       new ReadJSON().execute("http://example.com/api/data"); 
      } 
     }); 
    } 



    class ReadJSON extends AsyncTask<String, String, String>//line no 42 
    { 
     @Override 
     protected String doInBackground(String... params) { 
      return readURL(params[0]); 
     } 

     @Override 
     protected void onPostExecute(String content) { 
      try { 
       JSONObject jsonObject = new JSONObject(content); 
       JSONArray jsonArray = jsonObject.getJSONArray("videos"); 
       for(int i=0;i<jsonArray.length();i++) 
       { 
        JSONObject videoObject = jsonArray.getJSONObject(i); 
        arrayList.add(new Video(
          videoObject.getString("picture"), 
          videoObject.getString("title"), 
          videoObject.getString("pageid") 
        )); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      CustomListAdapter adapter = new CustomListAdapter(
        getApplicationContext(), R.layout.custom_list_layout, arrayList); 
      lv = (ListView) findViewById(R.id.listView); 
      lv.setAdapter(adapter); //line no 71 

     } 
    } 

java.lang.NullPointerException이 : 시도 가상 메소드를 호출 '무효 android.widget.ListView.setAdapter (android.widge 당신의 XML 파일의 목록보기에 따라서 nullpointer 예외를 던지는를 찾을 수 없습니다 것을 의미 는 null 객체 참조

XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.ac.app.MainActivity"> 


<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/listView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
</RelativeLayout> 
+0

어떻게 XML 레이아웃이 생겼를? –

+0

XML 코드 –

+0

이 xml에 추가되었습니다. 검토하십시오. –

답변

0

에 t.ListAdapter) '. ID = "@ 안드로이드 : ID/목록"SO이 오류에 대한 XML 파일

+0

id를 lv = (ListView) findViewById (R.id.listView)에 넣으면 listVIew id가 표시됩니다; // 오류는 여기 –

0

을 확인

1) 목록 (목록보기 안드로이드와 같은 ID가있을 수 있습니다 XML을 제대로 정의하지 두 가지 가능성이있을 것입니다 안드로이드하지 의미 : id = "@ + id/listView")

2) ArrayList에 Video가 추가되지 않았기 때문에 arrayList가 null이됩니다.

그래서 onPostExecute의 시작 라인 아래에 넣어 :

arrayList = new ArrayList<Video>(); 
+0

id에 대한 listView가있다. 나는 그것을 언급했다. 확인 xml –

0

나는이 시도 할 것 :

public class MainActivity extends AppCompatActivity { 

ArrayList<Video> arrayList; 
ListView lv; 
CustomListAdapter adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    arrayList = new ArrayList<>(); 
    lv = (ListView) findViewById(R.id.listView); 

    new ReadJSON().execute("http://example.com/api/data"); 
} 



class ReadJSON extends AsyncTask<String, String, String> 
{ 
    @Override 
    protected String doInBackground(String... params) { 
     return readURL(params[0]); 
    } 

    @Override 
    protected void onPostExecute(String content) { 
     try { 
      JSONObject jsonObject = new JSONObject(content); 
      JSONArray jsonArray = jsonObject.getJSONArray("videos"); 
      for(int i=0;i<jsonArray.length();i++) 
      { 
       JSONObject videoObject = jsonArray.getJSONObject(i); 
       arrayList.add(new Video(
         videoObject.getString("picture"), 
         videoObject.getString("title"), 
         videoObject.getString("pageid") 
       )); 
      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     adapter = new CustomListAdapter(getApplicationContext(), R.layout.custom_list_layout, arrayList); 
     lv.setAdapter(adapter); 

    } 
} 
+0

작동하지 않습니다 .. 같은 오류 –

+0

지금 오류가 어디 있습니까? onCreate? – Lino

+0

lv.setAdapter (어댑터); 여기 –