-1

TabscreenShot高科技大家我已经使用JSONS每个标签包含其中该标签的所需的数据,将显示有再循环器视图中创建的选项卡,但其中在输出相同的数据在每一个标签显示和还一个项目在它显示每个标签由具有在recyclerview相同数据

JSON

{ 
    "status": "Success", 
    "message": "Menu is Listed Here", 
    "menu1": [{ 
     "category": "Women", 
     "items": [{ 
      "id": "41", 
      "title": "Plain Classic Abaya " 
     }, { 
      "id": "45", 
      "title": "Modest Abaya Collection " 
     }, { 
      "id": "48", 
      "title": "Khaleejia Abaya " 
     }, { 
      "id": "53", 
      "title": "Modern Jersy Classic Abaya" 
     }, { 
      "id": "54", 
      "title": "Sophisticated Abayas" 
     }, { 
      "id": "55", 
      "title": "Khaleejia Kaftans " 
     }, { 
      "id": "56", 
      "title": "Jersey Maxi Kaftans " 
     }, { 
      "id": "57", 
      "title": "Wedding Abaya" 
     }, { 
      "id": "58", 
      "title": "Latest Trend Abaya" 
     }] 
    }, { 
     "category": "Kids", 
     "items": [{ 
      "id": "40", 
      "title": "Girls Abaya Plain " 
     }, { 
      "id": "52", 
      "title": "Girls Abaya Modern designs " 
     }] 
    }, { 
     "category": "Men", 
     "items": [{ 
      "id": "42", 
      "title": "Modern Stylish Thobes " 
     }, { 
      "id": "46", 
      "title": "Embroidery Thobes " 
     }, { 
      "id": "47", 
      "title": "Simple Plain Thobes " 
     }] 
    }], 
    "wholesale": "Wholesale Products" 
} 

TabsFragment.java

public class TabsFragment extends Fragment { 
    RecyclerView recycler_view; 
    Recycler_Adapter recycler_adapter; 

    public TabsFragment() { 

    } 

    public static Fragment getInstance(int position) { 
     OneFragment fragment = new OneFragment(); 
     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) { 
     View view = inflater.inflate(R.layout.fragment_list, container, false); 
     recycler_view = (RecyclerView) view.findViewById(R.id.recycler_view); 
     int position = getArguments().getInt("position", 0); 
     catmethod(); 
     return view; 
    } 

    private void catmethod() { 
     String url = "http://www.souqalkhaleejia.com/webapis/categories.php"; 
     JsonObjectRequest catreq = new JsonObjectRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONArray menuarray = response.getJSONArray("menu1"); 
        for (int i = 0; i < menuarray.length(); i++) { 
         JSONObject menuobj = menuarray.getJSONObject(i); 
         JSONArray itemarray = menuobj.getJSONArray("items"); 
         for (int j = 0; j < itemarray.length(); j++) { 
          JSONObject itemobj = itemarray.getJSONObject(j); 
          TestPojo test = new TestPojo(); 
          test.setIdstring(itemobj.getString("id")); 
          test.setTitlestring(itemobj.getString("title")); 
          recycler_adapter = new Recycler_Adapter(getActivity(), itemarray); 
          recycler_view.setLayoutManager(new LinearLayoutManager(getActivity())); 
          recycler_view.setAdapter(recycler_adapter); 
          recycler_adapter.notifyDataSetChanged(); 
         } 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d("CatMenu", String.valueOf(error)); 
      } 
     }); 
     AppController.getInstance().addToRequestQueue(catreq); 
    } 

} 

RecyclerViewAdapter.java

public class Recycler_Adapter extends RecyclerView.Adapter<ViewHolder> { 
    private Context context; 
    private JSONArray jsonArray; 

    public Recycler_Adapter(Context context, JSONArray jsonArray) { 
     this.context = context; 
     this.jsonArray = jsonArray; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View namelist = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_list_row, parent, false); 
     ViewHolder viewHolder = new ViewHolder(namelist); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     try { 
      for (int i=0;i<jsonArray.length();i++){ 
       String idname = jsonArray.getJSONObject(position).getString("id"); 
       String titlename = jsonArray.getJSONObject(position).getString("title"); 

       holder.cat_item_id.setText(idname); 
       holder.cat_item_name.setText(titlename); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    @Override 
    public int getItemCount() { 
     return jsonArray.length(); 
    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    Toolbar toolbar; 
    TabLayout tabs; 
    ViewPager viewpager; 
    List<TestPojo> testlit; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     assert getSupportActionBar() != null; 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     tabs = (TabLayout) findViewById(R.id.tabs); 
     viewpager = (ViewPager) findViewById(R.id.viewpager); 
     testlit=new ArrayList<TestPojo>(); 
     catmethod(); 
    } 
    private void catmethod() { 
     String url = "http://www.souqalkhaleejia.com/webapis/categories.php"; 
     JsonObjectRequest catreq = new JsonObjectRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONArray menuarray = response.getJSONArray("menu1"); 
        for (int i = 0; i < menuarray.length(); i++) { 
         JSONObject menuobj = menuarray.getJSONObject(i); 
        tabs.addTab(tabs.newTab().setText(menuobj.getString("category"))); 
test.setTitlestring(itemobj.getString("title")); 
        } 
        } 
        TabsAdapter tabsAdapter = new TabsAdapter(getSupportFragmentManager(), menuarray); 
        viewpager.setAdapter(tabsAdapter); 
        tabs.setupWithViewPager(viewpager); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d("CatMenu", String.valueOf(error)); 
      } 
     }); 
     AppController.getInstance().addToRequestQueue(catreq); 
    } 
} 

TabsAdapter.class

public class TabsAdapter extends FragmentPagerAdapter { 
    private JSONArray jsonArray; 
    public TabsAdapter(FragmentManager manager, JSONArray jsonArray) { 
     super(manager); 
     this.jsonArray = jsonArray; 
    } 
    @Override 
    public Fragment getItem(int position) { 
     return OneFragment.getInstance(position); 
    } 
    @Override 
    public int getCount() { 
     return jsonArray.length(); 
    } 
    @Override 
    public CharSequence getPageTitle(int position) { 
     String stringarray= null; 
     try { 
      stringarray = jsonArray.getJSONObject(position).getString("category"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return stringarray; 
    } 
} 

回答

1
更改

适配器:

public class Recycler_Adapter extends RecyclerView.Adapter<ViewHolder> { 
    private Context context; 

    private List<TestPojo> list; 

    public Recycler_Adapter(Context context, List list) { 
     this.context = context; 
     this.list= list; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View namelist = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_list_row, parent, false); 
     ViewHolder viewHolder = new ViewHolder(namelist); 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     try { 
       TestPojo testpojo = list.get(position); 
       holder.cat_item_id.setText(testpojo.getId()); 
       holder.cat_item_name.setText(testpojo.getTitle()); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    @Override 
    public int getItemCount() { 
     return list.length(); 
    } 
} 

MainActivity.java

在TestFragment
public class MainActivity extends AppCompatActivity { 
    Toolbar toolbar; 
    TabLayout tabs; 
    ViewPager viewpager; 
    List<TestPojo> testlit; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     assert getSupportActionBar() != null; 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     tabs = (TabLayout) findViewById(R.id.tabs); 
     viewpager = (ViewPager) findViewById(R.id.viewpager); 
     testlit=new ArrayList<TestPojo>(); 
     catmethod(); 
    } 
    private void catmethod() { 
     String url = "http://www.souqalkhaleejia.com/webapis/categories.php"; 
     JsonObjectRequest catreq = new JsonObjectRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONArray menuarray = response.getJSONArray("menu1"); 
        for (int i = 0; i < menuarray.length(); i++) { 
         JSONObject menuobj = menuarray.getJSONObject(i); 
        tabs.addTab(tabs.newTab().setText(menuobj.getString("category"))); 
test.setTitlestring(itemobj.getString("title")); 
        } 
        } 
        TabsAdapter tabsAdapter = new TabsAdapter(getSupportFragmentManager(), menuarray); 
        viewpager.setAdapter(tabsAdapter); 
        tabs.setupWithViewPager(viewpager); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d("CatMenu", String.valueOf(error)); 
      } 
     }); 
     AppController.getInstance().addToRequestQueue(catreq); 
    } 
} 

使用position:

private void catmethod() { 
      String url = "http://www.souqalkhaleejia.com/webapis/categories.php"; 
      int position = getArguments().getInt("position", 0); 
      JsonObjectRequest catreq = new JsonObjectRequest(Request.Method.GET, url, (String) null, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         JSONArray menuarray = response.getJSONArray("menu1"); 
          JSONObject menuobj = menuarray.getJSONObject(position); 
          JSONArray itemarray = menuobj.getJSONArray("items"); 
          List<TestPojo> objList = new ArrayList<>(); 
          for (int j = 0; j < itemarray.length(); j++) { 
           JSONObject itemobj = itemarray.getJSONObject(j); 
           TestPojo test = new TestPojo(); 
           test.setIdstring(itemobj.getString("id")); 
           test.setTitlestring(itemobj.getString("title")); 
           objList.add(test); 
          } 
          recycler_adapter = new Recycler_Adapter(getActivity(), objList); 
          recycler_view.setLayoutManager(new LinearLayoutManager(getActivity())); 
          recycler_view.setAdapter(recycler_adapter); 
          recycler_adapter.notifyDataSetChanged(); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.d("CatMenu", String.valueOf(error)); 
       } 
      }); 
      AppController.getInstance().addToRequestQueue(catreq); 
     } 

取出loop.Or你会得到所有的行显示最后的数据。 你应该在catmethod()中使用getArguments()。getInt(“position”,0)。

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    try { 
      String idname = jsonArray.getJSONObject(position).getString("id"); 
      String titlename = jsonArray.getJSONObject(position).getString("title"); 

      holder.cat_item_id.setText(idname); 
      holder.cat_item_name.setText(titlename); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

代码自爆应该只在TestFragment中使用一次,你不应该把它们放在循环中。

recycler_adapter = new Recycler_Adapter(getActivity(), itemarray); 
           recycler_view.setLayoutManager(new LinearLayoutManager(getActivity())); 
           recycler_view.setAdapter(recycler_adapter); 
           recycler_adapter.notifyDataSetChanged(); 


int position = getArguments().getInt("position", 0); 

你在哪里使用position.You得到这个位置,选择什么样的数据在每个选项卡中显示为0 =>女性,1 =>小孩,2 =>男人。但你在哪里使用它? 请尝试在TestFragment的catmethod中使用positoin。

+0

不,先生没有工作 – prominere

+0

PLZ读catmethod在TestFragment和写入使用每一行的。 –

+0

它不接受编辑先生 – prominere

相关问题