2014-11-29 12 views
0

진짜 아마추어 개발자로서 도움이 필요합니다. JSON 데이터를 구문 분석하여 항목 목록으로 변환하려고 시도했지만 클래스로 가져 오는 중 setListAdapter 메서드를 사용하는 데 어려움을 겪고 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다.setListAdapter를 해결할 수 없습니다.

여기 내 주요 활동, 오류가 onPostExecute 방법 여기

import java.io.IOException; 
import java.util.List; 

import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpGet; 

import android.app.Activity; 
import android.net.http.AndroidHttpClient; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.ArrayAdapter; 


public class JSON extends Activity { 

    // Coordinates used for centering the Map 

    private final static String UNAME = "aporter"; 
    private final static String URL = "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=" 
      + UNAME; 

    public static final String TAG = "MapsEarthquakeMapActivity"; 

    // Set up UI and get earthquake data 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     new HttpGetTask().execute(URL); 

    } 

    private class HttpGetTask extends 
      AsyncTask<String, Void, List<GeonameRec>> { 

     AndroidHttpClient mClient = AndroidHttpClient.newInstance(""); 

     @Override 
     protected List<GeonameRec> doInBackground(String... params) { 

      HttpGet request = new HttpGet(params[0]); 
      JSONResponseHandler responseHandler = new JSONResponseHandler(); 

      try { 

       // Get Earthquake data in JSON format 
       // Parse data into a list of EarthQuakeRecs 

       return mClient.execute(request, responseHandler); 

      } catch (ClientProtocolException e) { 
       Log.i(TAG, "ClientProtocolException"); 
      } catch (IOException e) { 
       Log.i(TAG, "IOException"); 
      } 

      return null; 

     } 

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

      if (null != mClient) 
       mClient.close(); 
      setListAdapter(new ArrayAdapter<String>(
       JSON.this, 
       R.layout.listitem, result)); 



     } 
    } 

} 
} 

그리고있는 것은 내가 JSON 응답의 형식을 내 클래스입니다.

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.ResponseHandler; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import org.json.JSONTokener; 

public class JSONResponseHandler implements 
    ResponseHandler<List<GeonameRec>> { 
@Override 
public List<GeonameRec> handleResponse(HttpResponse response) 
     throws ClientProtocolException, IOException { 
    List<GeonameRec> result = new ArrayList<GeonameRec>(); 
    String JSONResponse = new BasicResponseHandler() 
      .handleResponse(response); 
    try { 
     JSONObject object = (JSONObject) new JSONTokener(JSONResponse) 
       .nextValue(); 
     JSONArray earthquakes = object.getJSONArray("earthquakes"); 
     for (int i = 0; i < earthquakes.length(); i++) { 
      JSONObject tmp = (JSONObject) earthquakes.get(i); 
      result.add(new GeonameRec(
        tmp.getDouble("lat"), 
        tmp.getDouble("lng"))); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

} 
+1

당신이'ListActivity' 대신에서'JSON' 클래스를 확장해야 전화'Activity' –

+0

감사를 해결 한 것으로 보인다 톤. – Liam

+0

설명을 보려면 제 대답을 참조하십시오. 문제가 해결되면이를 수락하십시오. :) –

답변

0

setListAdapter 방법은 Activity에서 ListActivity하지에서 사용할 수 있습니다. Activity 서브 클래스에서이를 수행하려면 정의해야합니다 귀하의 ListViewlistView.setAdapter

관련 문제