//我正在尝试实现此处显示的设计。在此设计中,我必须动态填充食物项列表,因为我在recyclerview中使用了gridview。
//这就是我解析json的方法,我使用了两个arraylist,一个用于recyclerview,一个用于gridview。
if(status.equals("true"))
{
responseobj=jsonObject.getJSONObject(="response");
orderarray=responseobj.getJSONArray("order");
int len=orderarray.length();
for(int i=0;i<len;i++)
{
ordeModel=new OrederModel();
jsonObjectarray= orderarray.getJSONObject(i);
ordeModel.setOrderid(jsonObjectarray.getString("order_id"));
ordeModel.setOrderid(jsonObjectarray.getString("customer_id"));
ordeModel.setOrderid(jsonObjectarray.getString("customer_name"));
ordeModel.setOrderid(jsonObjectarray.getString("customer_mobile"));
ordeModel.setOrderid(jsonObjectarray.getString("resturant_id"));
ordeModel.setOrderid(jsonObjectarray.getString("resturant_name"));
ordeModel.setOrderid(jsonObjectarray.getString("no_of_items"));
ordeModel.setOrderid(jsonObjectarray.getString("order_status"));
ordeModel.setOrderid(jsonObjectarray.getString("created_on"));
ordeModel.setOrderid(jsonObjectarray.getString("special_instruction"));
itemjsonarray=jsonObjectarray.getJSONArray("items");
int lenth=itemjsonarray.length();
for(int j=0;j<lenth;j++)
{
itemmodel=new Itemmodel();
itemjsonobj= itemjsonarray.getJSONObject(j);
itemmodel.setItemname(itemjsonobj.getString("ordered_item"));
itemmodel.setItemprice(itemjsonobj.getString("item_price"));
itemmodel.setItemquantity(itemjsonobj.getString("quantity"));
itemlist.add(itemmodel);
}
Log.d("itemlistsize==",""+itemlist.size());
orderlist.add(ordeModel);
adapter.notifyDataSetChanged();
}
}
//这是我的recyclerview适配器代码
public PendingOrderAdapter(Context context, ArrayList<OrederModel> orderlist, ArrayList<Itemmodel> itemlist)
{
this.context=context;
this.orderlist=orderlist;
this.itemlist=itemlist;
layoutInflater=LayoutInflater.from(context);
gridAdapter=new GridAdapter(context,itemlist);
}
@Override
public Viewholder onCreateViewHolder(ViewGroup parent, int viewType)
{
final View view=layoutInflater.inflate(R.layout.singleroworders,parent,false);
return new Viewholder(view);
}
@Override
public void onBindViewHolder(Viewholder holder, int position)
{
final OrederModel order=orderlist.get(position);
holder.gridView.setAdapter(gridAdapter);
}
@Override
public int getItemCount()
{
return orderlist.size();
}
public class Viewholder extends RecyclerView.ViewHolder implements View.OnClickListener
{
private GridView gridView;
public Viewholder(View itemView)
{
super(itemView);
gridView= (GridView) itemView.findViewById(R.id.grid);
}
}
//这是我的gridview适配器代码
public class GridAdapter extends BaseAdapter
{
Context context;
ArrayList<Itemmodel> ordermodel;
LayoutInflater inflater;
GridAdapter(Context context, ArrayList<Itemmodel> ordermodel)
{
this.ordermodel = ordermodel;
this.context = context;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return ordermodel.size();
}
@Override
public Object getItem(int position) {
return ordermodel.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
final viewHolder holder;
if (convertView == null)
{
convertView = inflater.inflate(R.layout.singlerowgridviewitem, null);
holder=new viewHolder();
holder.itemname= (TextView) convertView.findViewById(R.id.itemname);
holder.itemqnty= (TextView) convertView.findViewById(R.id.itemqntty);
convertView.setTag(holder);
}
else
{
holder= (viewHolder) convertView.getTag();
}
holder.itemqnty.setText(ordermodel.get(position).getItemquantity());
holder.itemname.setText(ordermodel.get(position).getItemname());
return convertView;
}
}
class viewHolder
{
TextView itemname,itemqnty;
}
我面临的问题是:说订单ID 1有两个项目,订单ID 2有三个项目,订单ID 3有五个项目,但在每个订单中我得到10个要显示的项目(这是2 + 3的总和) +5)。如何保留与各个订单ID对应的项目数。
答案 0 :(得分:2)
应覆盖此方法:
@Override
public void onBindViewHolder(Viewholder holder, int position) {
final OrederModel order = orderlist.get(position);
GridAdapter gridAdapter = new GridAdapter(context,itemlist);
holder.gridView.setAdapter(gridAdapter);
}