2017-01-25 4 views
0

すべてのタブに同じリストの内容が表示されています。タブ位置に従って対応するカテゴリ項目にアクセスするにはMenufragment.classの助けが必要タブ内のリストビュー項目をタブポジションに変更

期待される結果:最初のタブに4つの子羊のアイテム、2番目のタブに8つの海の食品、3番目のタブの5つのヌードル、7つの卵のアイテム第4のタブでは13個、第5のタブでは13個のベジ料理。

実際の結果:すべてのタブには、13のベジタリアン料理アイテムのリストが表示されています。

主な活動

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"); 
        System.out.println(categoryname); 

        JSONArray hotelmenu = hotel.getJSONArray(categoryname); 
        //categoryitems = new ArrayList<List<Menuclass>>(hotelmenu.length()); 
        listitems = new ArrayList<Menuclass>(hotelmenu.length()); 
        List<Menuclass> list = new ArrayList<Menuclass>(hotelmenu.length()); 
        // categoryitems.add(list); 
        for (int i = 0; i < hotelmenu.length(); i++) { 
         System.out.println(hotelmenu.length()); 
         JSONObject menuitems = hotelmenu.getJSONObject(i); 
         itemname = menuitems.getString("name"); 
         itemsprice = menuitems.getString("price"); 
         itemtype = menuitems.getString("veg"); 
         int itemtypeint = Integer.parseInt(itemtype); 
        // System.out.println(menuitems[i]); 
         if (itemtypeint == 0) { 

          list.add(new Menuclass(itemname, itemsprice, R.drawable.nonveg)); 
          // categoryitems.add(Arrays.asList(new Menuclass(itemname,itemtype,R.drawable.nonveg))); 
         } 
         else { 

          list.add(new Menuclass(itemname, itemsprice, R.drawable.vegicon)); 
          // categoryitems.add(Arrays.asList(new Menuclass(itemname, itemtype, R.drawable.vegicon))); 
         } 
         listitems=list; 
        } 

        // System.out.println(categoryitems); 
        System.out.println(listitems); 
        tabLayout.addTab(tabLayout.newTab().setText((categoryname))); 

        ViewPagerAdapter1 adapter = new ViewPagerAdapter1(getSupportFragmentManager(), items); 
        viewPager.setAdapter(adapter); 
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
        adapter.notifyDataSetChanged(); 

       } 
      } 

Menufragment.class

public class Menufragment extends android.support.v4.app.Fragment { 

Context context; 

public Menufragment() { 
// Required empty public constructor 
} 

public static Fragment getInstance(int position) { 
Menufragment fragment = new Menufragment(); 
Bundle bundle = new Bundle(); 
bundle.putInt("position", position); 
fragment.setArguments(bundle); 
return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

// Inflate the layout for this fragment 
View view = inflater.inflate(R.layout.activity_menu1, container, false); 
int position = getArguments().getInt("position", 0); 

// set your list base on position 
    // list 01x 
ListView listview = (ListView) view.findViewById(R.id.Listview1); 
System.out.println(MenumainActivity.listitems); 
***MenuViewAdapter listViewAdapter = new MenuViewAdapter(getActivity(), MenumainActivity.listitems);*** 
    listview.setAdapter(listViewAdapter); 
return view; 
} 
} 

class ViewPagerAdapter1 extends FragmentPagerAdapter { 
private JSONArray jsonArray; 

public ViewPagerAdapter1(FragmentManager manager, JSONArray jsonArray) { 
super(manager); 
this.jsonArray = jsonArray; 
} 

@Override 
public Fragment getItem(int position) { 
return Menufragment.getInstance(position); 
} 

@Override 
public int getCount() { 
return jsonArray.length(); 
} 
} 

JSON応答

{ "メニュー":{ "項目":[{ "ID":1、 "コード" : "hot1_sub1_mnu"、 "name": "Mutton"、 "status": "1"、 "Mutton":[{"" id ":1、" code ":" hot1_sub1_mut "、" name ":" Mutton Peper Fry " "100"、 "veg": "0"}、{"id":2、 "code": "hot1_sub2_mut"、 "name": "Mutton Curry"、 "price": "100" "veg": "0"}、{"id":3、 "code": "hot1_sub3_mut"、 "n "100"、 "veg": "0"}、{"id":4、 "code": "hot1_sub4_mut"、 "name": "Mutton Mohalai"、 "Mutton Rogan Josh" 「価格」:「100」、「veg」:「0」}]}、{「id」:2、「code」:「hot1_sub2_mnu」、「name」:「Sea Food」、「status」:「1」、 ""、 "価格": "150"、 "veg": "0"}、{"魚の揚げ物" "id":2、 "code": "hot1_sub2_sf"、 "name": "Chilly Fish"、 "price": "250"、 "veg": "0"}、{"id":3、 "code" "veg": "0"}、{"id":4、 "code": "hot1_sub4_sf"、 "name": "hot1_sub3_sf" "価格": "180"、 "veg": "0"}、{"id":5、 "code": "hot1_sub5_sf"、 "name": "チリプルーン"、 "price" "150"、 "veg": "0"}、 "id":6、 "code": "hot1_sub6_sf"、 "name": "ゴールデンフライドプロー"、 "price": "210"、 "veg" "0"}、{"id":7、 "code": "hot1_sub7_sf"、 "name": "Fish Malabar Curry"、 "price": "300"、 "veg": "0"}、{"id "、" code ":" hot1_sub8_sf "、" name ":"カレーカレー "、" price ":" 130 "、" veg ":" 0 "}]}、{" id ":3、" code " : "hot1_sub3_mnu"、 "name": "Noodels"、 "status": "1"、 "Noodels":[{"" id ":1、" code ":" hot1_sub1_nd "、" name ":" Chicken Noodels " "price": "70"、 "veg": "0"}、{"id":2、 "code": " vegg ":" 0 "}、{" id ":3、" code ":" hot1_sub3_nd "、" name ":" Veg "、" hot1_sub2_nd "、" name ":" Egg Noodles "、" price ":" 60 " "価格": "55"、 "veg": "1"}、{"id":4、 "code": "hot1_sub4_nd"、 "name": "Mix Noodles"、 "price": "80 "、" veg ":" 1 "}、{" id ":5、" code ":" hot1_sub1_nd "、" name ":" Scezwan Chicken Noodles "、" price ":" 60 "、" veg ":" 0 "}"} "}"、 "コード": "hot1_sub4_mnu"、 "名前": "卵"、 "ステータス": "1"、 "卵":[{"" id ":1、" code " "veg": "0"}、{"id":2、 "code": "hot1_sub2_egg"、 "name": "hot1_sub1_egg" "価格": "20"、 "veg": "0"}、{"id":3、 "code": "hot3_sub3_egg"、 "name": "Masala Omlete"、 "price" "25"、 "veg": "0"}、{"id":4、 "code": "hot3_sub4_egg"、 "name": "Fried Egg(2 nos)"、 "price": "20" "veg": "0"}、{"id":5、 "code": "hot1_sub5_egg"、 "name": "Boiled Egg(2 nos)"、 "price": "20"、 "veg": "0 "" id ":6、" code ":" hot1_sub6_egg "、" name ":" Egg Podimas "、" price ":" 25 "、" veg ":" 0 "}、{" id ":7 "code": "hot1_sub7_egg"、 "name": "Egg Curry/Masala"、 "price": "50"、 "veg": "0"}]}、{"id":5、 "code" "hot1_sub5_mnu"、 "name": "ベジタリアン料理"、 "status": "1"、 "Vegetarian Dish es ":[{" "id":1、 "code": "hot1_sub1_veg"、 "name": "Veg./ Gobi Man。"価格": "60"、 "veg": "1"}、{"id":2、 "code": "hot1_sub2_veg"、 "name": "Panner Manchoorian Dry"、 "price" 60 "、" veg ":" 1 "}、" id ":3、" code ":" hot1_sub3_veg "、" name ":" Dhal Fry "、" price ":" 50 "、" veg ":" 1 "価格": "50"、 "veg": "1"}、{"id": "}"、 "code": "hot1_sub4_veg"、 "name" 5、 "code": "hot1_sub5_veg"、 "name": "Aloo Gobi Masala"、 "price": "50"、 "veg": "1"}、{"id":6、 "code": "hot1_sub6_veg "、"名前 ":"グリーンピースマサラ "、"価格 ":" 50 "、" veg ":" 1 "}、{" id ":7、" code ":" hot1_sub7_veg "、" name ":" Chenna 「50」、「veg」:「1」}、「id」:8、「code」:「hot1_sub8_veg」、「name」:「かだい野菜」、「price」:「60」 "veg": "1"}、{"id":9、 "code": "hot1_sub9_veg"、 "name": "Veg Kolapuri"、 "price": "60"、 "veg": "1" "" id ":10、" code ":" hot1_sub10_veg "、" name ":" Malai Kuftha Curry "、" price ":" 60 "、" veg ":" 1 "}、{" id ":11 "code": "hot1_sub11_veg"、 "name": "Panner Butter Masala"、 "price": "60"、 "veg": "1"}、{"id":12、 "code": "hot1_sub11_veg" veg ":" 1 "}、{" id ":13、" code ":" hot1_sub12_veg "、" name ":"ボイルド "、"名前 ":"マッシュルームドライ/グレイビー "、"価格 " 「野菜」、「価格」:「50」、「ve G ":" 1 "}]}]}、" ステータス ":" 真 "}

+0

3つのタブに3つの断片がありますか? –

+0

いいえ。単一のフラグメントです。タブが動的に作成されるため、 – Ana

+0

のカテゴリ数に基づいて作成する必要があります.Jsonレスポンスを共有しますか? –

答えて

0

forループの中にあなたのリストを初期化します。

listitems = new ArrayList<Menuclass>(hotelmenu.length()); 
        List<Menuclass> list = new ArrayList<Menuclass>(hotelmenu.length()); 

forループの内側に入れて、この行を

+0

それをしました。ただし、最後のカテゴリの最後の項目だけがすべてのタブに表示されます。 – Ana

+0

この行だけをリストに入れます。 list = new ArrayList (hotelmenu.length()); –

+0

その作品はありますか? –

0
ArrayList<HashMap<String, String>> arrayList = new ArrayList<>(); 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONObject jsonObject_Menu = jsonObject.getJSONObject("Menu"); 
      JSONArray jsonArray_Items = jsonObject_Menu.getJSONArray("Items"); 

      for(int i=0; i<jsonArray_Items.length(); i++){ 
       JSONArray jsonArray_Mutton = jsonArray_Items.optJSONObject(i).getJSONArray("Mutton"); 
       for(int j=0; j<jsonArray_Mutton.length(); j++){ 
        HashMap<String, String> map = new HashMap<>(); 
        JSONObject jsonObject1 = jsonArray_Mutton.optJSONObject(j); 
        map.put("name", "name"); 
        map.put("price", "price"); 
        map.put("veg", "veg"); 
        arrayList.add(map); 
       } 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
このような

使用解析が、その後は

tvName.setText(arrayList.get(position).get("name")); 
+0

はこの作品ですか? –

0

は、このソリューションを試してみて、それが動作するかどうかレムが知っているリストビューでArrayListの設定値を渡します。 はここ

ViewPagerAdapter1 adapter = new ViewPagerAdapter1(getSupportFragmentManager(), items);

し、それに応じてViewPagerAdapter1を変更し、あなたのリストを渡します。

その後、public static Fragment getInstance(int position)でも同じリストを渡すと、バンドルに含めるようにシリアル化できます。あなたの断片ではなく、MenumainActivity.listitemsというリストを取得するには、バンドルからリストを取得してアダプタに渡します。

あなたの問題を解決することを願っています。

関連する問題