2014-03-03 2 views
0

서버에서 데이터를 수신해야한다는 하나의 응용 프로그램을 개발 중이며 성공적으로 데이터를 읽습니다. 여기에 내가 서버 코드에서 데이터를받을 AsyncTask, 쓴 및 AsyncTask에서 내 활동, 여기에 하나만 데이터를 보낼 내 json 개체를 3 objects.i AsyncTask 있지만 3 점점 개체를 얻을 수 있습니다. 활동에안드로이드에서 Json Object를 파싱 하시겠습니까?

내 AsyncTask를

public class ReceivingLatLongAsync extends AsyncTask<Void, Void, Void> { 

private ProgressDialog pDialog; 

Context mContext; 

JSONArray jsonArryDetails=null; 

public static final String DETAILS = "locations"; 
public static final String LAT = "lat"; 
public static final String LNG = "lng"; 
public static final String ADDRESS = "address"; 
public static final String CTIME = "ctime"; 

private String lat1; 
private String lng1; 
private String address1; 
private String time1; 


public ReceivingLatLongAsync(Context context){ 

    this.mContext = context; 

} 
@Override 
protected void onPreExecute() { 
    // TODO Auto-generated method stub 
    super.onPreExecute(); 
    pDialog = new ProgressDialog(mContext); 
    pDialog.setMessage("Please wait..."); 
    pDialog.setCancelable(false); 
    pDialog.show(); 

} 

@Override 
protected Void doInBackground(Void... params) { 
    // TODO Auto-generated method stub 

    ServiceHandler serviceHandler= new ServiceHandler(); 

    String jSonString = `serviceHandler.makeServiceCall 
     (TrafficConstants.RECIEVE_LATLON_POL_URL, ServiceHandler.POST);` 

    Log.e("Response: ", "> " + jSonString); 

    if(jSonString != null){ 

     try { 
      JSONObject jsonObject = new JSONObject(jSonString); 

      jsonArryDetails = jsonObject.getJSONArray(DETAILS); 

      for(int i = 0;i<jsonArryDetails.length();i++){ 

       JSONObject mapDetails =   
          jsonArryDetails.getJSONObject(0); 

       lat1 = mapDetails.getString(LAT); 
       lng1 = mapDetails.getString(LNG); 
       address1 = mapDetails.getString(ADDRESS); 
       time1 = mapDetails.getString(CTIME); 


       Log.e("ADDRESS1", address1); 
       Log.e("TIME2",time1); 



      } 

     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    return null; 
} 
@Override 
protected void onPostExecute(Void result) { 
    // TODO Auto-generated method stub 
    super.onPostExecute(result); 
    pDialog.dismiss(); 

    Intent intent = new Intent(mContext,GetLatLongForTPActivity.class); 
    intent.putExtra("LAT", lat1); 
    intent.putExtra("LNG", lng1); 
    intent.putExtra("ADDRESS", address1); 
    intent.putExtra("time",time1); 

    mContext.startActivity(intent); 
} 

    } 

내 activty

public class GetLatLongForTPActivity extends FragmentActivity 
           implements LocationListener{ 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_get_lat_long_for_tp); 

    timeEdit = (EditText)findViewById(R.id.timeId); 
    submitBtn = (Button)findViewById(R.id.subId); 

    Intent intent = getIntent(); 
    String anotherLAT=intent.getStringExtra("LAT"); 
    String anotherLNG=intent.getStringExtra("LNG"); 

    Log.e(" NEW LATLONG",anotherLAT); 

    } 
+0

시도의 _startActivity (의도) _ _mContext.startActivity (의도)되지; _ –

+0

당신이 구현해야하는 목적을 가진 하나 개의 클래스를 생성, 객체의 하나 개의 배열을 보내고 당신의 배열을 보내기 위해, 그 배열을 보내야합니다' –

+0

을 parcelable' 구문 분석 옵션의 경우 Gson을 시도하십시오. http://stackoverflow.com/questions/21480634/unable-to-loop-through-dynamic-json-string-recursively-in-android/21480997#21480997 – user2450263

답변

2
변경

이 당신은 인덱스 변경 루프에서

ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 

    for(int i = 0;i<jsonArryDetails.length();i++){ 
      HashMap<String, String> map = new HashMap<String, String>(); 
      JSONObject mapDetails =   
         jsonArryDetails.getJSONObject(i); 

      lat1 = mapDetails.getString(LAT); 
      lng1 = mapDetails.getString(LNG); 
      address1 = mapDetails.getString(ADDRESS); 
      time1 = mapDetails.getString(CTIME); 
      map.put(LAT, lat1); 
      map.put(LNG, lg1); 
      map.put(ADDRESS, address1); 
      map.put(CTIME, time1); 

      mylist.add(map); 

     } 
+0

나는 모든 물건을 활동에 보내야만 가능합니까? – Durga

+0

@Durga 이것을 수행 한 후에는 [이 링크] (http://stackoverflow.com/questions/6355787/how-to-pass-arraylisthashmapstring-stringfrom-one-activity-to-another)에서 귀하의 목록을 활동으로 보내주십시오. –

+0

이 배열 목록을 내 활동에 보내 주셔서 감사합니다. 그걸 읽는 방법 – Durga

3

그것은 jsonArray이며, 지금은 마지막 개체가 아닙니다에게 ENTIER 배열을 보내 렸기 때문에

+0

답장을 보내 주셔서 감사합니다. 대안 ?? – Durga

+0

예 가장 좋은 점은 get/set 함수를 만들고 주전자 활동을 배열로 설정하고 두 번째 활동 인 –

+0

을 가져 와서 가져오고 직접 지시하지 않은 "send int data through intent"문제를 해결하는 것입니다. –

0

같은 것을 추가해야

JSONObject mapDetails =   
         jsonArryDetails.getJSONObject(0); 

JSONObject mapDetails =   
         jsonArryDetails.getJSONObject(i); 

에 : 당신은을 만들 필요가

 for(int i = 0;i<jsonArryDetails.length();i++){ 

      JSONObject mapDetails =jsonArryDetails.getJSONObject(i); 
      //etc            ^//change here 
0

을 4 개를 저장하는 클래스 필드 (위도, 경도, 주소, 시간)를 사용하고 있고, 그 객체를 비유하게 만들려면이 예제를 사용할 수 있습니다 : http://aryo.lecture.ub.ac.id/android-passing-arraylist-of-object-within-an-intent/; 그리고 그 후 당신은 의도 배열을 사용하여 첨부 할 수 있습니다

intent.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value) 

이이 처리하는 올바른 방법이 될 것이다, 조금 더 복잡 다음 원래 희망했을 경우에도.

관련 문제