2014-10-02 2 views
1

Я работаю с Json. Моя JSON выглядит эта структураПочему я вижу последний элемент при анализе моего ответа json?

this is a my json

я использую AsyncTask разобрать мой JSON и показать его в ListView У меня есть проблема Info jsonarray. Я также проанализировал время jsonobject, но в arraylist добавлен только последний объект. Это мой исходный код

private class CustomerStatistic extends AsyncTask<String, Void, String> { 

    ProgressDialog pDialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     pDialog = new ProgressDialog(getActivity()); 

     pDialog.setCancelable(false); 
     pDialog.show(); 
     pDialog.setContentView(R.layout.custom_progressdialog); 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     return Utils.getJSONString(params[0]); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     try { 

      JSONArray mainJson = new JSONArray(result); 

      for (int i = 0; i < mainJson.length(); i++) { 
       JSONObject objJson = mainJson.getJSONObject(i); 

       objItem = new ServerItems(); 

       objItem.setImage(imageurl + objJson.getString("ipone_4")); 
       objItem.setTitle(objJson.getString("title")); 
       objItem.setYoutube(objJson.getString("youtube")); 
       objItem.setWritten(objJson.getString("written")); 
       objItem.setCategory(objJson.getString("category")); 
       objItem.setDescraption(objJson.getString("descraption")); 
       objItem.setGeorgia_time(objJson.getString("georgia_time")); 
       objItem.setWold_time(objJson.getString("wold_time")); 
       objItem.setStars(objJson.getString("stars")); 
       objItem.setBlurimage(imageurl 
         + objJson.getString("ipone_4_blur")); 

       JSONObject cinema = objJson.getJSONObject("Cinemas"); 
       JSONArray cinemasarray = cinema.getJSONArray("Cinemaname"); 

       for (int j = 0; j < cinemasarray.length(); j++) { 
        JSONObject objJson1 = cinemasarray.getJSONObject(j); 

        JSONArray info = objJson1.getJSONArray("info"); 
        for (int k = 0; k < info.length(); k++) { 
         JSONObject information = info.getJSONObject(k); 



         objItem.setTime(information.getString("time")); 
         Log.e("time is", objItem.getTime()); 

        } 

       } 

       arrayOfList.add(objItem); 

      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     if (pDialog != null) { 
      pDialog.dismiss(); 

      pDialog = null; 
     } 
     setAdapterToListview(); 

    } 
} 

, а также в ListView мыши, я заменил новый фрагмент, а также я puted свои элементы от позиции. У меня есть проблема только «время» jsobobject это является моей ListView в OnClick код Java

main_listview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      mPosition = position; 

      MoviewListResult newFragment = new MoviewListResult(); 

      FragmentTransaction transaction = getFragmentManager() 
        .beginTransaction(); 

      Bundle bundle = new Bundle(); 

      bundle.putString("image", arrayOfList.get(position) 
        .getBlurimage()); 
      bundle.putString("title", arrayOfList.get(position).getTitle()); 
      bundle.putString("trailer", arrayOfList.get(position) 
        .getYoutube()); 
      bundle.putString("category", arrayOfList.get(position) 
        .getCategory()); 
      bundle.putString("writer", arrayOfList.get(position) 
        .getWritten()); 
      bundle.putString("stars", arrayOfList.get(position).getStars()); 
      bundle.putString("geotime", arrayOfList.get(position) 
        .getGeorgia_time()); 
      bundle.putString("worldtime", arrayOfList.get(position) 
        .getWold_time()); 
      bundle.putString("descraption", arrayOfList.get(position) 
        .getDescraption()); 

      bundle.putString("time", arrayOfList.get(position).getTime()); 

      newFragment.setArguments(bundle); 
      transaction.replace(R.id.content_frame, newFragment); 

      transaction.commit(); 

     } 
    }); 

, что я делаю неправильно? если кто-нибудь знает решение, пожалуйста, помогите мне Ps я «м нового пользователя и я не могу опубликовать изображение и смотрите мое Url.i загрузил мой образ

ответ

0

Используйте этот один как JSONParser:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.util.Log; 
public class JSONParser { 
    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 
    // constructor 
    public JSONParser() { 
    } 
    public JSONObject getJSONFromUrl(String url) { 
    // Making HTTP request 
    try { 
     // defaultHttpClient 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     is = httpEntity.getContent(); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
      is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
     sb.append(line + "n"); 
     } 
     is.close(); 
     json = sb.toString(); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 
    // try parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 
    // return JSON String 
    return jObj; 
    } 
} 

Тогда здесь активность и AsyncTask реализация:

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import learn2crack.asynctask.library.JSONParser; 
public class MainActivity extends Activity { 
    TextView uid; 
    TextView name1; 
    TextView email1; 
    Button Btngetdata; 
    //URL to get JSON Array 
    private static String url = "http://10.0.2.2/JSON/"; 
    //JSON Node Names 
    private static final String TAG_USER = "user"; 
    private static final String TAG_ID = "id"; 
    private static final String TAG_NAME = "name"; 
    private static final String TAG_EMAIL = "email"; 
    JSONArray user = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Btngetdata = (Button)findViewById(R.id.getdata); 
     Btngetdata.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      new JSONParse().execute(); 
     } 
    }); 
    } 
    private class JSONParse extends AsyncTask<String, String, JSONObject> { 
     private ProgressDialog pDialog; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      uid = (TextView)findViewById(R.id.uid); 
     name1 = (TextView)findViewById(R.id.name); 
     email1 = (TextView)findViewById(R.id.email); 
      pDialog = new ProgressDialog(MainActivity.this); 
      pDialog.setMessage("Getting Data ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 
     @Override 
     protected JSONObject doInBackground(String... args) { 
     JSONParser jParser = new JSONParser(); 
     // Getting JSON from URL 
     JSONObject json = jParser.getJSONFromUrl(url); 
     return json; 
     } 
     @Override 
     protected void onPostExecute(JSONObject json) { 
     pDialog.dismiss(); 
     try { 
      // Getting JSON Array 
      user = json.getJSONArray(TAG_USER); 
      JSONObject c = user.getJSONObject(0); 
      // Storing JSON item in a Variable 
      String id = c.getString(TAG_ID); 
      String name = c.getString(TAG_NAME); 
      String email = c.getString(TAG_EMAIL); 
      //Set JSON Data in TextView 
      uid.setText(id); 
      name1.setText(name); 
      email1.setText(email); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     } 
    } 
} 

подробности:

http://www.learn2crack.com/2013/10/android-asynctask-json-parsing-example.html

+0

спасибо, но у меня есть класс JsonParse (Utils) .meybe вы меня не поняли. Я разбирал json, но у меня проблема только с объектом времени массива Info. Посмотрите мое изображение – lukaaa

Смежные вопросы