2014-09-12 75 views
1

我被賦予了項目爲:請閱讀通過片段顯示JSON數據?

樣品JSON -

[{ 「老虎」: 「A」, 「名」: 「假主題1」, 「代碼」:「SCD1 「,」班級編號「:」12345「,」學生總數「:」67「,{」slot「:」B「,」姓名「:」虛擬主題2「,」代碼「:」SCD2「,」數字「:」12346「,」學生總數「:」29「,{」slot「:」C「,」名稱「:」虛擬主題3「,」代碼「:」SCD3「 12347「,」學生總數「:」41「,{」slot「:」D「,」name「:」虛擬主題4「,」代碼「:」SCD4「,」班級編號「:」12348「總學生「:」65「},{」slot「:」E「,」名稱「:」虛擬主題5「,」代碼「:」SCD5「,」班級編號「:」12349「,」學生總數「: 「55」}]

具有5個虛擬主題信息的樣本JSON數據和與每個主題相關的信息。根據您的意願下載此JSON數據,從中解析出信息並存儲在共享首選項中。 顯示在名稱和代碼爲頭的ExpandableListView中。在擴展時,顯示它的其他細節。

我無法N個做到這一點沒有。的對象...如果有沒有。在JSON數據對象....請這個問題也有幫助...

所以我做了這個項目按照指示,但現在我給出相同的項目,並做到在片段#list項目應名和代碼和數據應該是它的數據...

這裏是通過使用活動我的代碼......請告訴該怎麼辦使用片段一樣..

#json_parse_class.java

 package com.office.tracker; 
    // Nikhil Verma 13BCE0037 9787029484 L-217 
    import java.io.IOException; 

    import org.apache.http.HttpEntity; 
    import org.apache.http.HttpResponse; 
    import org.apache.http.client.ClientProtocolException; 
    import org.apache.http.client.HttpClient; 
    import org.apache.http.client.methods.HttpGet; 
    import org.apache.http.impl.client.DefaultHttpClient; 
    import org.apache.http.util.EntityUtils; 
    import org.json.JSONArray; 
    import org.json.JSONException; 
    import org.json.JSONObject; 

    import android.app.Activity; 
    import android.content.Context; 
    import android.content.SharedPreferences; 
    import android.os.AsyncTask; 
    import android.os.Bundle; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    public class json_dpa extends Activity { 
     HttpClient client; 
     JSONObject dummy1; 
     SharedPreferences json_spref;; 
     String[] datas = null; 
     TextView tv; 
     public static String s1="Default^Default^Default^Default^Default^Default^Default^Default^" + 
       "Default^Default^Default^Default^Default^Default^Default^Default^" + 
       "Default^Default^Default^Default^Default^Default^Default^Default^Default"; 
     private static final String SLOT = "slot"; 
     static final String NAME = "name"; 
     static final String CODE = "code"; 
     static final String ClASS_NUMBER = "cno."; 
     static final String TOTAL_STUDENTS = "ts"; 
     static final String TOTAL = "t"; 
     SharedPreferences.Editor editor; 
     public static int ob_counter = 0; 
     public String deta[] = null; 
     private static final String PREFS_NAME = "json_prefname"; 
     int count = 0; 
     final static String URL = "http://www.gdgvitvellore.com/samplejson/"; 

     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.json); 
      client = new DefaultHttpClient(); 
      tv = (TextView) findViewById(R.id.json_id); 
      json_spref = getSharedPreferences(PREFS_NAME, 0); 
     // this.ob_counter = counter; 
     String[] index = { "slot", "name", "code", "class number", 
        "total students" }; 
      new getdata().execute(index); 
     } 

     public int async(int counter) 
     { 
     this.ob_counter = counter; 
     return 0; 
     } 

     public JSONObject gdg(int r) throws ClientProtocolException, IOException, 
       JSONException { 
    ob_counter=r; 
      HttpGet get = new HttpGet(URL); 
      HttpResponse rtr = client.execute(get); 
      int status = rtr.getStatusLine().getStatusCode(); 
      if (status == 200) { 
       HttpEntity e = rtr.getEntity(); 
       String data = EntityUtils.toString(e); 
       JSONArray detail = new JSONArray(data); 
       JSONObject dummy = detail.getJSONObject(ob_counter); 
       return dummy; 
      } else { 
       Toast.makeText(json_dpa.this, "Error ", Toast.LENGTH_LONG); 
       return null; 
      } 
     } 

     public class getdata extends AsyncTask<String, Integer, String> { 

      protected String doInBackground(String... params) { 
       try { 

        dummy1 = gdg(0); 
        String mystr1 = dummy1.getString(params[0]); 
        String mystr2 = dummy1.getString(params[1]); 
        String mystr3 = dummy1.getString(params[2]); 
        String mystr4 = dummy1.getString(params[3]); 
        String mystr5 = dummy1.getString(params[4]); 
        dummy1=null; 
        dummy1 = gdg(1); 
        String mystr6 = dummy1.getString(params[0]); 
        String mystr7 = dummy1.getString(params[1]); 
        String mystr8 = dummy1.getString(params[2]); 
        String mystr9 = dummy1.getString(params[3]); 
        String mystr10 = dummy1.getString(params[4]); 
        dummy1=null; 
        dummy1 = gdg(2); 
        String mystr11 = dummy1.getString(params[0]); 
        String mystr12 = dummy1.getString(params[1]); 
        String mystr13 = dummy1.getString(params[2]); 
        String mystr14 = dummy1.getString(params[3]); 
        String mystr15 = dummy1.getString(params[4]); 
        dummy1=null; 
        dummy1 = gdg(3); 
        String mystr16 = dummy1.getString(params[0]); 
        String mystr17 = dummy1.getString(params[1]); 
        String mystr18 = dummy1.getString(params[2]); 
        String mystr19 = dummy1.getString(params[3]); 
        String mystr20 = dummy1.getString(params[4]); 
        dummy1=null; 
        dummy1 = gdg(4); 
        String mystr21 = dummy1.getString(params[0]); 
        String mystr22 = dummy1.getString(params[1]); 
        String mystr23 = dummy1.getString(params[2]); 
        String mystr24 = dummy1.getString(params[3]); 
        String mystr25 = dummy1.getString(params[4]); 
        editor = json_spref.edit(); 
        editor.putString(SLOT, mystr1); 
        editor.putString(NAME, mystr2); 
        editor.putString(CODE, mystr3); 
        editor.putString(ClASS_NUMBER, mystr4); 
        editor.putString(TOTAL_STUDENTS, mystr5); 
        editor.putString(TOTAL, mystr1+"^"+mystr2+"^"+mystr3+"^"+mystr4+"^"+mystr5+"^"+mystr6+"^"+mystr7 
          +"^"+mystr8+"^"+mystr9+"^"+mystr10+"^"+mystr11+"^"+mystr12+"^"+mystr13+"^"+mystr14+"^"+mystr15 
          +"^"+mystr16+"^"+mystr17+"^"+mystr18+"^"+mystr19+"^"+mystr20+"^"+mystr21+"^"+mystr22 
          +"^"+mystr23+"^"+mystr24+"^"+mystr25); 
        editor.commit(); 
        return mystr1; 
       } catch (ClientProtocolException e) { 

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

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

        e.printStackTrace(); 
       } 

       return null; 
      } 

      protected void onPostExecute(String result) { 
       s1 = json_spref.getString(TOTAL, "defaut Slot"); 
       tv.setText(s1); 

      } 

     } 

    } 

list_main類.java

  package com.office.tracker; 

     import android.app.Activity; 
     import android.content.Intent; 
     import android.os.Bundle; 
     import android.view.Menu; 
     import android.view.MenuInflater; 
     import android.view.MenuItem; 
     import android.view.View; 
     import android.view.Window; 
     import android.view.WindowManager; 
     import android.view.View.OnClickListener; 
     import android.widget.Button; 
     import android.widget.ExpandableListView; 

     public class json_list_main extends Activity implements OnClickListener 
     { // Nikhil Verma 13BCE0037 9787029484 L-217 
      ExpandableListView elv; 
      Button but; 

      protected void onCreate(Bundle savedInstanceState) { 

       super.onCreate(savedInstanceState); 
       requestWindowFeature(Window.FEATURE_NO_TITLE); 
       getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
       setContentView(R.layout.json_exp_list); 
       elv=(ExpandableListView) findViewById(R.id.json_exp_listID); 
       but=(Button) findViewById(R.id.list_button); 
       but.setOnClickListener(this); 
       //json_dpa ob=new json_dpa(); 
       //ob.async(0); 

       //String s1=ob.json_spref.getString(ob.NAME, "defaut Slot"); 
       elv.setAdapter(new json_exp_list_view(this)); 
      } 

      public boolean onCreateOptionsMenu(Menu menu) { 
       // TODO Auto-generated method stub 
       super.onCreateOptionsMenu(menu); 
       MenuInflater mf = getMenuInflater(); 
       mf.inflate(R.menu.cool_menu, menu); 
       return true; 
      } 

      @Override 
      public boolean onOptionsItemSelected(MenuItem item) { 
       // TODO Auto-generated method stub 
       switch (item.getItemId()) { 
       case R.id.aboutus: 
        Intent rob = new Intent("com.office.tracker.ABOUTUS"); 
        startActivity(rob); 

        break; 
      // case R.id.preferences: 
        //Intent roby = new Intent("com.office.tracker.PREFS"); 
        //startActivity(roby); 
        //break; 
       case R.id.exit: 
        finish(); 
        break; 
       } 
       return false; 
      } 

      public void onClick(View v) { 
       if(v.getId()==R.id.list_button){ 
        Intent rob = new Intent("com.office.tracker.JSON_DPA"); 
        startActivity(rob); 

       } 

      } 

     } 




custom adapter class.java 




     package com.office.tracker; 

    import android.content.Context; 
    import android.graphics.Color; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.BaseExpandableListAdapter; 
    import android.widget.TextView; 

     public class json_exp_list_view extends BaseExpandableListAdapter { 
     private Context context; 
     int i=0; 
     json_dpa ob=new json_dpa(); 
     String ret=ob.s1; 
     String i1="Slot -"; 
     String i2="Name -"; 
     String i3="Code -"; 
     String i4="Class No. -"; 
     String i5="Total Students -"; 

     String[] splitArray = ret.split("\\^");//split whenever at least one whitespace is encountered 


     //String s1=ob.json_spref.getString(ob.NAME, "defaut Slot"); 
     //json_dpa ob=new json_dpa(); 
     //String name1=ob.name_ret(); 
     //String code1=ob.code_ret(); 
     String[] parent={i2+splitArray[1]+" , "+i3+splitArray[2],i2+splitArray[6]+" , "+i3+splitArray[7],i2+splitArray[11]+" , "+i3+splitArray[12] 
       ,i2+splitArray[16]+" , "+i3+splitArray[17],i2+splitArray[21]+" , "+i3+splitArray[22]}; 
     String[][] child={{i1+splitArray[0],i4+splitArray[3],splitArray[4]}, 
       {i1+splitArray[5],i4+splitArray[8],i5+splitArray[9]} 
     ,{i1+splitArray[10],i4+splitArray[13],i5+splitArray[14]}, 
     {i1+splitArray[15],i4+splitArray[18],i5+splitArray[19]}, 
     {i1+splitArray[20],i4+splitArray[23],i5+splitArray[24]}}; 
     public json_exp_list_view(Context context) { 
      this.context=context; 
     } 

     @Override 
     public Object getChild(int arg0, int arg1) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public long getChildId(int arg0, int arg1) { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public View getChildView(int GroupPosition, int ChildPosition, boolean arg2, View arg3, 
       ViewGroup arg4) { 
      TextView tv=new TextView(context); 
      tv.setText(child[GroupPosition][ChildPosition]); 
      tv.setPadding(90, 15, 15, 15); 
      tv.setTextSize(25); 
      tv.setTextColor(Color.BLUE); 
      return tv; 
     } 

     @Override 
     public int getChildrenCount(int GroupPosition) { 
      // TODO Auto-generated method stub 
      return child[GroupPosition].length; 
     } 

     @Override 
     public Object getGroup(int GroupPosition) { 
      // TODO Auto-generated method stub 
      return GroupPosition; 
     } 

     @Override 
     public int getGroupCount() { 
      // TODO Auto-generated method stub 
      return parent.length; 
     } 

     @Override 
     public long getGroupId(int GroupPosition) { 
      // TODO Auto-generated method stub 
      return GroupPosition; 
     } 

     @Override 
     public View getGroupView(int GroupPosition, boolean arg1, View arg2, ViewGroup arg3) { 

      TextView tv=new TextView(context); 
      tv.setText(parent[GroupPosition]); 
      tv.setPadding(110, 15, 15, 15); 
      tv.setTextSize(27); 
      tv.setTextColor(Color.GREEN); 
      return tv; 
     } 

     @Override 
     public boolean hasStableIds() { 
      // TODO Auto-generated method stub 
      return false; 
     } 

     @Override 
     public boolean isChildSelectable(int arg0, int arg1) { 
      // TODO Auto-generated method stub 
      return true; 
     } 

    } 
+0

只是複製和粘貼,直到ñ......你知道的循環? – Selvin 2014-09-12 14:32:05

+0

woah ...任務提醒......如果您將任務分配給您,您將不會學到任何東西 – Srikanth 2014-09-12 14:36:00

+0

我試過在後執行但每次都會崩潰!並看到我已經使用了25個字符串變量...每當我使用字符串數組它崩潰.. – user3515220 2014-09-12 14:36:28

回答

2

隱蔽您的JSON字符串你需要做以下對象:

轉到下面的鏈接並下載GSON: https://code.google.com/p/google-gson/downloads/detail?name=google-gson-1.5-release.zip&can=4&q=

複製它在你的項目

創建類,它表示的對象

比你需要的JSON轉換爲科目列表清單做以下代碼:

//import the packeges 

import com.google.gson.Gson; 
import com.google.gson.reflect.TypeToken; 
import com.tekpub.models.Production; 

//type of objct we need to convert JSON string to 
Type typeOfDest = new TypeToken<List<Subjects>>(){}.getType(); 

Gson gson = new Gson(); 
//return the object  
return gson.fromJson(input, typeOfDest); 
+0

嘿,那不是我的意思...我有一個鏈接有JSON對象格式的數據(我剛剛複製了Json數據顯示)....我主要想問如何更改我的代碼這樣它就可以爲json格式的對象運行n ...並通過Fragment執行相同的操作。 – user3515220 2014-09-12 16:48:13

+1

你的問題沒有提到這一切。請創造另一個問題,並提供細節。我試圖根據問題爲您提供答案。 – 2014-09-12 17:35:25

+0

請看這裏...如果你可以幫助 – user3515220 2014-09-12 17:39:43

0

看一看GSON,圖書館輕鬆JSON數據解析到/爲對象。你甚至可以參數它