2013-04-15 1 views
0

json 응답으로 사용자 지정 목록 뷰를로드 할 수 없습니다. 여기 내 코드가있다. JSON 데이터가 사용자 지정 목록보기에로드되지 않음

// my activity 

public class LocalExploreActivity extends Activity { 

ListView lvEvents; 
    JSONAdapter adapter; 

    JSONArray eventResponseArray; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_local_explore); 
lvEvents = (ListView) findViewById(R.id.eventsList); 
    adapter = new JSONAdapter (LocalExploreActivity.this,eventResponseArray); 
    lvEvents.setAdapter(adapter); 

} 

private void getEventsList() throws JSONException { 


    JSONObject jsonObjSend = new JSONObject(); 
    JSONObject jsonObjRecv = HttpGetClient.SendHttpPost(URL); 


    eventResponseArray = jsonObjRecv.getJSONArray("events"); 
    System.out.println("events array issssssssssss "+eventResponseArray); 
    System.out.println("array len "+eventResponseArray.length()); 
    JSONObject parkObj; 
    JSONObject activityObj; 
    JSONArray sessionArray; 

    for (int i = 0; i < eventResponseArray.length(); i++) { 
     JSONObject eventDetails = eventResponseArray.getJSONObject(i); 

     parkObj = eventDetails.getJSONObject("park"); 

     activityObj = eventDetails.getJSONObject("activity"); 


     eventName = eventDetails.getString("name"); 
     System.out.println("the eventName is 33333 "+eventName); 

     eventFee = eventDetails.getString("fee"); 
     System.out.println("the eventFee is 33333 "+eventFee); 


     SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
     EventModel.PREF_EVENTNAME = prefs.getString(eventName, eventName); 

     EventModel.PREF_EVENTFEE = prefs.getString(eventFee, eventFee); 

    } 
} 

} 



// my Adapter 

public class JSONAdapter extends BaseAdapter implements ListAdapter{ 


private final Activity activity; 
private final JSONArray jsonArray; 


protected JSONAdapter (Activity activity, JSONArray jsonArray) { 
    assert activity != null; 
    assert jsonArray != null; 

    this.jsonArray = jsonArray; 
    this.activity = activity; 
} 

@Override public int getCount() { 
    if(null==jsonArray) 
     return 0; 
    else 
     return jsonArray.length(); 
} 

@Override public JSONObject getItem(int position) { 
    if(null==jsonArray) return null; 
    else 
     return jsonArray.optJSONObject(position); 
} 

@Override public long getItemId(int position) { 
    JSONObject jsonObject = getItem(position); 

    return jsonObject.optLong("id"); 
} 


@Override public View getView(int position, View convertView, ViewGroup parent) { 
    if (convertView == null) 
     convertView = activity.getLayoutInflater().inflate(R.layout.custom_events_list, null); 



    TextView txtEventName = (TextView)convertView.findViewById(R.id.eventTitleTV); 
    TextView txtEventFee = (TextView)convertView.findViewById(R.id.eventPriceTV); 

    JSONObject json_data = getItem(position); 
    System.out.println("the json data received is 111111111 "+json_data); 
    if(null!=json_data){ 
     String eventName = null; 
     String eventFee = null; 
     try { 
      eventName = json_data.getString("name"); 
      eventFee=json_data.getString("fee"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     txtEventName.setText(eventName); 
     txtEventFee.setText(eventFee); 
    } 


    return convertView; 
} 

} 

내가 디버그 모드에서 응용 프로그램을 실행하고 아래 코드에서 값을 확인

, 어댑터 = 새로운 JSONAdapter (LocalExploreActivity.this, eventResponseArray);

배열이 null입니다. 도움이 필요하다!!

답변

1

물론 eventResponseArray은 초기화되지 않는 것으로 보입니다.

+0

지금 코드를 편집했습니다. 나는 eventResponseArray를 얻고있다. null이 아닙니다. – user2208748

+0

당신이 옳았습니다. 배열이 null입니다. 나는 응답을받은 후 어댑터를 설정했습니다. 감사. – user2208748

관련 문제