每个选项卡在 recyclerview 中都有相同的数据
Every Tab is having same data in the recyclerview
大家好,我使用 JSONS 创建了选项卡,每个选项卡都包含回收器视图,其中将显示该选项卡所需的数据,但与输出相同的数据显示在每个选项卡,其中还显示了一项
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;
}
}
更换适配器:
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
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);
}
}
在TestFragment中使用位置:
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.You 中使用一次,不应该把它们放在循环中。
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 得到这个位置 select 在每个选项卡 0=>women,1=>kids,2=>men 中显示什么数据。但是你在哪里使用它?
请尝试使用TestFragment的catmethod中的positoin。
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;
}
}
更换适配器:
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
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);
}
}
在TestFragment中使用位置:
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.You 中使用一次,不应该把它们放在循环中。
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 得到这个位置 select 在每个选项卡 0=>women,1=>kids,2=>men 中显示什么数据。但是你在哪里使用它? 请尝试使用TestFragment的catmethod中的positoin。