2017-02-27 91 views
0

我根據動態創建類項目(羊肉,海鮮)的數量有兩個選項卡。在ArrayList中更改片段動態

在MenumainActivity我能夠存儲在ArrayList的羊肉項目命名listitemsAll和海洋食品命名listitemsAll1通過這樣做,如果(貓== 1)....

MenumainActivity:

public void onSuccess(String response) { 
       JSONObject obj = new JSONObject(response); 
       if (obj.getBoolean("status")) {  9   

    JSONObject hotels = obj.getJSONObject("Menu"); 
    JSONArray items = hotels.getJSONArray("Items"); 
    for (int j = 0; j < items.length(); j++) { 

         JSONObject hotel = items.getJSONObject(j); 
         categoryname = hotel.getString("name"); 
         categoryid = hotel.getString("id"); 
         hotelmenu = hotel.getJSONArray(categoryname); 
         listitems = new ArrayList<Menuclass>(); 
         listitems1 = new ArrayList<Menuclass>(); 
         for (int i = 0; i < hotelmenu.length(); i++) { 

          JSONObject menuitems = hotelmenu.getJSONObject(i); 
          itemname = menuitems.getString("name"); 
          itemsprice = menuitems.getString("price"); 
          itemtype = menuitems.getString("veg"); 
          final int itemtypeint = Integer.parseInt(itemtype); 
          cat = Integer.parseInt(categoryid); 

          if (cat == 1) { 
           if (itemtypeint == 0) { 

            listitems.add(new Menuclass(itemname, itemsprice, R.drawable.nonveg)); 
           } 

           else { 
            listitems.add(new Menuclass(itemname, itemsprice, R.drawable.vegicon)); 
           } 
      else if (cat == 2) { 
           if (itemtypeint == 0) { 

            listitems1.add(new Menuclass(itemname, itemsprice, R.drawable.nonveg)); 
           } 

           else { 
            listitems1.add(new Menuclass(itemname, itemsprice, R.drawable.vegicon)); 
           } 

          } 
         } 
         listitemsAll.addAll(listitems); 
         listitemsAll.addAll(listitems1); 
         tabLayout.addTab(tabLayout.newTab().setText((categoryname))); 
         ViewPagerAdapter1 adapter = new ViewPagerAdapter1(getSupportFragmentManager(),items); 
         viewPager.setAdapter(adapter); 
         viewPager.addOnPageChangeListener(new 
+0

請分享給MenuViewAdapter –

+0

共享Menuview適配器 – Ana

+0

的代碼是這個JSON是從你沒有訪問服務器創建?我建議將包含「羊肉,海鮮......等等」的json數組更改爲「盤子」。然後可以使用GSON轉換器將此JSON輕鬆轉換爲Java類對象。 http://pastebin.com/Ug​​LDb3NW。一旦你確認我可以共享代碼,其餘如果JSON可以改變 –

回答

0

一旦你已經改變了JSON來

{ 
"Menu": { 
"Items": [ 
    { 
    "id": 1, 
    "code": "kd_sub1_mnu", 
    "name": "Mutton", 
    "status": "1", 
    "dishes": [ 
     { 
     "id": 1, 
     "code": "hot1_sub1_mut", 
     "name": "Mutton Peper Fry", 
     "price": "100", 
     "veg": "0" 
     }, 
     { 
     "id": 2, 
     "code": "hot1_sub2_mut", 
     "name": "Mutton Curry", 
     "price": "100", 
     "veg": "0" 
     }, 
     { 
     "id": 3, 
     "code": "hot1_sub3_mut", 
     "name": "Mutton Rogan Josh", 
     "price": "100", 
     "veg": "0" 
     }, 
     { 
     "id": 4, 
     "code": "hot1_sub4_mut", 
     "name": "Mutton Mohalai", 
     "price": "100", 
     "veg": "0" 
     } 
    ] 
    }, 
    { 
    "id": 2, 
    "code": "kd_sub2_mnu", 
    "name": "Sea Food", 
    "status": "1", 
    "dishes": [ 
     { 
     "id": 1, 
     "code": "hot1_sub1_sf", 
     "name": "Fish Fry", 
     "price": "150", 
     "veg": "0" 
     }, 
     { 
     "id": 2, 
     "code": "hot1_sub2_sf", 
     "name": "Chilly Fish", 
     "price": "250", 
     "veg": "0" 
     }, 
     { 
     "id": 3, 
     "code": "hot1_sub3_sf", 
     "name": "Finger Fish", 
     "price": "350", 
     "veg": "0" 
     } 
    ] 
    }, 
    { 
    "id": 3, 
    "code": "kd_sub3_mnu", 
    "name": "Noodels", 
    "status": "1", 
    "dishes": [ 
     { 
     "id": 1, 
     "code": "hot1_sub1_nd", 
     "name": "Chicken Noodels", 
     "price": "70", 
     "veg": "0" 
     }, 
     { 
     "id": 3, 
     "code": "hot1_sub3_nd", 
     "name": "Veg Noodles", 
     "price": "55", 
     "veg": "1" 
     } 
    ] 
    }, 
    { 
    "id": 4, 
    "code": "kd_sub4_mnu", 
    "name": "Egg", 
    "status": "1", 
    "dishes": [ 
     { 
     "id": 1, 
     "code": "hot1_sub1_egg", 
     "name": "Scrambled Egg", 
     "price": "20", 
     "veg": "0" 
     } 
    ] 
    }, 
    { 
    "id": 5, 
    "code": "kd_sub5_mnu", 
    "name": "Vegetarian Dishes", 
    "status": "1", 
    "dishes": [ 
     { 
     "id": 1, 
     "code": "hot1_sub1_veg", 
     "name": "Veg./ Gobi Man.Dry", 
     "price": "60", 
     "veg": "1" 
     }, 
     { 
     "id": 2, 
     "code": "hot1_sub2_veg", 
     "name": "Panner Manchoorian Dry", 
     "price": "60", 
     "veg": "1" 
     } 
    ] 
    }, 
    { 
    "id": 6, 
    "code": "kd_sub6_mnu", 
    "name": "Tandoor", 
    "status": "1", 
    "dishes": [ 
     { 
     "id": 1, 
     "code": "hot1_sub1_ta", 
     "name": "Naan", 
     "price": "15", 
     "veg": "0" 
     }, 
     { 
     "id": 2, 
     "code": "hot1_sub2_ta", 
     "name": "Butter naan", 
     "price": "20", 
     "veg": "0" 
     }, 
     { 
     "id": 3, 
     "code": "hot1_sub3_ta", 
     "name": "Kulcha", 
     "price": "15", 
     "veg": "0" 
     } 
    ] 
    } 
] 
}, 
"status": "true" 
} 

您可以使用http://www.jsonschema2pojo.org/並粘貼您的JSON對象創建4 Java類爲

public class Menuclass { 

@SerializedName("Menu") 
@Expose 
private Menu menu; 
@SerializedName("status") 
@Expose 
private String status; 

public Menu getMenu() { 
return menu; 
} 

public void setMenu(Menu menu) { 
this.menu = menu; 
} 

public String getStatus() { 
return status; 
} 

public void setStatus(String status) { 
this.status = status; 
} 

} 

public class Dish { 

@SerializedName("id") 
@Expose 
private Integer id; 
@SerializedName("code") 
@Expose 
private String code; 
@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("price") 
@Expose 
private String price; 
@SerializedName("veg") 
@Expose 
private String veg; 

public Integer getId() { 
return id; 
} 

public void setId(Integer id) { 
this.id = id; 
} 

public String getCode() { 
return code; 
} 

public void setCode(String code) { 
this.code = code; 
} 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public String getPrice() { 
return price; 
} 

public void setPrice(String price) { 
this.price = price; 
} 

public String getVeg() { 
return veg; 
} 

public void setVeg(String veg) { 
this.veg = veg; 
} 

} 


public class Item { 

@SerializedName("id") 
@Expose 
private Integer id; 
@SerializedName("code") 
@Expose 
private String code; 
@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("status") 
@Expose 
private String status; 
@SerializedName("dishes") 
@Expose 
private List<Dish> dishes = null; 

public Integer getId() { 
return id; 
} 

public void setId(Integer id) { 
this.id = id; 
} 

public String getCode() { 
return code; 
} 

public void setCode(String code) { 
this.code = code; 
} 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public String getStatus() { 
return status; 
} 

public void setStatus(String status) { 
this.status = status; 
} 

public List<Dish> getDishes() { 
return dishes; 
} 

public void setDishes(List<Dish> dishes) { 
this.dishes = dishes; 
} 

} 

public class Menu { 

@SerializedName("Items") 
@Expose 
private List<Item> items = null; 

public List<Item> getItems() { 
return items; 
} 

public void setItems(List<Item> items) { 
this.items = items; 
} 

} 

如果需要,您可以更改類的名稱。

現在只需改變你的onSuccess()方法如下:

Menuclass menuClassObject; 
public void onSuccess(String response) { 
    menuClassObject = (new Gson()).fromJson(response,Menuclass.class); 
} 

現在menuClassObject包含JSON轉換爲類對象的響應。

MenuFragment的OnCreateView:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_tab1, container, false); 
    ListView listview = (ListView) view.findViewById(R.id.Listview1); 
    position = getArguments().getInt("position", 0); 


    MenuViewAdapter listViewAdapter = new MenuViewAdapter(getActivity(), menuClassObject,position); 
    listview.setAdapter(listViewAdapter); 

    return view; 
} 
} 

更改您的MenuViewAdapter:

public class MenuViewAdapter extends BaseAdapter { 
private LayoutInflater layoutinflater; 
private Menuclass menuClass; 
private ArrayList<Dish> listStorage; 
private Context context; 
private int pagerPosition; 

public MenuViewAdapter(Context context, Menuclass customMenuClass,int position) { 
    this.context = context; 
    layoutinflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    menuClass = customMenuClass; 
    pagerPosition = position; 
    listStorage = new ArrayList<>(); 
    listStorage = menuClass.getMenu().getItems().get(position).getDishes(); 
} 

@Override 
public int getCount() { 
    return listStorage.size(); 

} 

@Override 
public Object getItem(int position) { 
    return position; 
} 

@Override 
public long getItemId(int position) { 
    return position; 

} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

Dish dish = listStorage.get(position); 
//Now Dish class has methods you need. Customize your view here based on the Dish. 

} 
+0

。 – Ana

+0

請標記爲接受的,如果它的工作菜餚 –