大家我使用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;
}
}
答案 0 :(得分: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
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);
}
删除循环。或者你将获得所有行以显示最后的数据。 你应该在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();
}
}
Code bloww只能在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);
你在哪里使用那个位置。你得到这个位置来选择每个标签中显示的数据0 =&gt;女性,1 =&gt;孩子,2 =&gt;男性。但你在哪里使用它? 请尝试在TestFragment的catmethod中使用positoin。