2012-05-06 3 views
1

해당 그룹 및 해당 하위 서버 (JSON 배열)의 응답에서 데이터를 가져 오는 ExpandableListView를 갖고 싶습니다.
어떻게해야합니까?
내가 SimpleCursorTreeAdapter이 있다는 것을 알고 있지만, 그것은 단지 커서를 사용하고 내가 전에 그것을 사용하지만,이 어댑터는 JSON 배열로 사용하는 나는 동등한 필요JSON 배열로 ExpandableListView

이것은 groupItems를 얻을 수있는 기능입니다

 protected void BindOrederItemList(final int order_id) 
    { 
     // TODO Auto-generated method stub 
     //select all categories from order items where order_id =?? 
     //select items where category=?? 
     String Url="http://192.168.3.113/mywebservices.php?op=GetOrderCategory&lang_id=1&order_id="+order_id; 
     GetNetworkData.OnPostExecuteListener listener=new GetNetworkData.OnPostExecuteListener() 
     { 

      @Override 
      public void onPostExecute(String result) { 
       // TODO Auto-generated method stub 
       if (result!=null) 
       { 
        try 
        { 

       JSONArray jArray = new JSONArray(result); 
       HashMap<String, String> Catmap = new HashMap<String, String>(); 
       // ArrayList<Integer> category=new ArrayList<Integer>(); 
       for (int i = 0; i < jArray.length(); i++) 

        { 

         JSONObject e = jArray.getJSONObject(i); 
          id=e.getInt("order_id"); 

         cat_name=e.getString("cat_name"); 
          cat_id=e.getInt("cat_id"); 
          Catmap.put("cat_id",String.valueOf(cat_id)); 
          Catmap.put("cat_name", cat_name); 
          catItemsList.add(Catmap); 

        } 
       Log.i("Insid For Loop", "Group size = "+catItemsList.toArray()); 



         // Log.i("Bind item", "CAT SIZE "+catItemsList.size()); 

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

      } 

     }; 

     try 
     { 
     GetNetworkData task = new GetNetworkData(Url,null,listener); 
     task.execute(); 
     } 
     catch(Exception e) 
     { 

      e.printStackTrace(); 

     } 
    } 

감사

+0

가 확장 목록을 처리하는 방법의 문제를 해결해야하지만 난 할 수 없습니다 변경 내용을 찾을 수있는 방법을 말해 줄 수있는 내 문제를 해결할 수 있습니다. 감사합니다 – Basant

답변

1

하나 그것이 SimpleExandableListAdapter을 사용하기의 방법입니다.

그런 경우 먼저 JSON 데이터를 가져 와서지도 목록으로 저장해야합니다. AsyncTaskLoader을 사용하여 데이터를 가져와 재 패키징 한 다음 백그라운드에서 어댑터의 새 인스턴스를 만든 다음 ExandableListView로 스왑합니다.

+0

내가 코드를 넣어 내 질문을 편집 할 지금까지 내 코드에 AsyncTaskLoader 넣을 수 말해 주시겠습니까 – Basant

+0

난 AsyncTask 사용 서버의 데이터는 AsyncTaskLoader – Basant

+0

@Basant와 다르므로 AsyncTask도 함께 사용할 수 있습니다. SimpleExpandableListAdapter를 사용/채우는 방법에 대한 [다음은 예제입니다.] (http://www.coderzheaven.com/2011/04/10/expandable-listview-in-android-using-simpleexpandablelistadapter-a-simple-example/) 그게 네가 원하는 곳이야. 그렇지 않다면 나에게 다시 물어보십시오. –

1

은 내가 데이터를 동적이며 MySQL 데이터베이스에서 (JSON 배열) 때 여기 당신이 내 질문을 수정 @aromero 대답

 protected void BindOrederItemList(final int order_id) 
    { 
     // TODO Auto-generated method stub 
     //select all categories from order items where order_id =?? 
     //select items where category=?? 

     JSONObject params = new JSONObject(); 
     //int no_pepole=Integer.valueOf(noOfGest_txt.getText().toString()); 
      try 
      { 
     // params.put("order_status",myStatus); 
     int rest_id=prefs.getInt("Rest_id", 0); 
      params.put("order_id", order_id); 
      params.put("lang_id", 1); 
      params.put("rest_id", rest_id); 
      //params.put("order_status", 0); 
     // params.put("noOfpepole",number_of_guest); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 



     String Url="http://192.168.3.113/mywebservices.php?op=GetOrderCategory"; 
     GetNetworkData.OnPostExecuteListener listener=new GetNetworkData.OnPostExecuteListener() 
     { 

      @Override 
      public void onPostExecute(String result) { 
       // TODO Auto-generated method stub 
       if (result!=null) 
       { 
        try 
        { 
        catItemsList.clear(); 
       JSONArray jArray = new JSONArray(result); 
       ArrayList<ArrayList<HashMap<String, String>>> list=new ArrayList<ArrayList<HashMap<String, String>>>(); 
       // ArrayList<Integer> category=new ArrayList<Integer>(); 

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

        { 
         HashMap<String, String> Catmap = new HashMap<String, String>(); 

         JSONObject e = jArray.getJSONObject(i); 
          id=e.getInt("order_id"); 

         cat_name=e.getString("cat_name"); 
          cat_id=e.getInt("cat_id"); 
          Catmap.put("cat_id",String.valueOf(cat_id)); 
          Catmap.put("cat_name", cat_name); 
          catItemsList.add(Catmap); 
          Log.i("Insid For Loop", "order ID "+order_id); 

          list= BindCatItems(cat_id, order_id); 



         Log.i("Insid For Loop", "Child size = "+list.size()); 
        } 
       // Log.i("Insid For Loop", "Group size = "+catItemsList.size()); 

       SimpleExpandableListAdapter expandListAdapter= new SimpleExpandableListAdapter(getActivity(), 
          catItemsList, R.layout.group_item, 
          new String[] {"cat_name"},new int[]{R.id.lbl_cat_group}, 
          BindCatItems(cat_id, order_id), R.layout.category_row, new String[]{"item_name"}, new int[]{R.id.txt_category_row}); 


       order_items_list.setAdapter(expandListAdapter); 
         // Log.i("Bind item", "CAT SIZE "+catItemsList.size()); 

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

      } 

     }; 

     try 
     { 
     GetNetworkData task = new GetNetworkData(Url,params,listener); 
     task.execute(); 
     } 
     catch(Exception e) 
     { 

      e.printStackTrace(); 

     } 
    } 

    protected ArrayList<ArrayList<HashMap<String, String>>> BindCatItems(int cat_id,int order_id) 

    { 
     // TODO Auto-generated method stub 
     ItemsList.clear(); 
     JSONObject params = new JSONObject(); 

     //int no_pepole=Integer.valueOf(noOfGest_txt.getText().toString()); 
      try 
      { 
     // params.put("order_status",myStatus); 
     int rest_id=prefs.getInt("Rest_id", 0); 
      params.put("order_id", order_id); 
      params.put("lang_id", 1); 
      params.put("cat_id",cat_id); 
      //params.put("order_status", 0); 
     // params.put("noOfpepole",number_of_guest); 
      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 


     String Url="http://192.168.3.113/mywebservices.php?op=GetOrderItems"; 
     GetNetworkData.OnPostExecuteListener listener=new GetNetworkData.OnPostExecuteListener() 

     { 

      @Override 
      public void onPostExecute(String result) { 
       // TODO Auto-generated method stub 
       if (result!=null) 
       { 
        try 
        { 
         Log.i("log bind","Inside Bind Category items"); 
         // catItemsList.clear(); 
         ArrayList<HashMap<String, String>> mapList = 
            new ArrayList<HashMap<String, String>>(); 
         JSONArray jArray = new JSONArray(result); 

          for (int i = 0; i < jArray.length(); i++) 
          { 
           HashMap<String, String> map = new HashMap<String, String>(); 

           JSONObject e = jArray.getJSONObject(i); 

           int id=e.getInt("item_id"); 
           if (id==0) 
           { 

           } 


           else 
           { 



           map.put("item_id",String.valueOf(e.getInt("item_id"))); 
           map.put("oi_id", String.valueOf(e.getInt("oi_id"))); 
           map.put("item_name", e.getString("item_name")); 
           map.put("quantity",String.valueOf(e.getString("quantity"))); 
           map.put("price", String.valueOf("price")); 
         mapList.add(map); 

           } 
          } 

          ItemsList.add(mapList); 

         // Log.i("Bind Item Order", "CAT SIZE "+catItemsList.size()); 



          /* ItemsAdapter=new SimpleAdapter(getActivity(), catItemsList, 
            R.layout.list_item, 
            new String[] {"item_name"}, 
            new int[]{R.id.list_item_title}); 
          */ 
          // Log.i("Add Section","ItemsAdapter count= "+ItemsAdapter.getCount()); 


          //order_list.setAdapter(adapter); 
          //adapter.notifyDataSetChanged(); 
        } 
        catch(Exception e) 
        { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }; 

     try 
     { 
     GetNetworkData task = new GetNetworkData(Url,params,listener); 
     task.execute(); 
     } 
     catch(Exception e) 
     { 

      e.printStackTrace(); 

     } 
     return ItemsList; 


    } 
+1

안녕하세요. 내 답변, 그 정보를 기반으로 자신의 답변을 작성하는 것은 매우 정중하지 않아요, 그리고 자신에게 올바른 대답을 포기하고 심지어 내 대답을 upvote하지 .. 어서, 좋은 스포츠 가자. –

관련 문제