根据动态创建的类别项目(羊肉,海鲜)的数量,我有两个标签。
在MenumainActivity中,如果(cat == 1)....
,我可以将名为listitemsAll的ArrayList中的Mutton项目和名为listitemsAll1的ArrayList中的Sea food项目存储起来。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 :(得分: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.
}