动态更改片段

时间:2017-02-27 10:15:19

标签: java android arraylist

根据动态创建的类别项目(羊肉,海鲜)的数量,我有两个标签。

在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 

1 个答案:

答案 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.

 }
相关问题