2017-05-29 114 views
-1

//我试图实现此处显示的设计。在此设计中,我必须动态填充食品项目列表,因为我在回收站视图中使用了gridview。在recyclerview中填充网格视图

enter image description here

//这是我是如何解析JSON和我用了两个数组列表,一个用于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相对应的项目数量。

回答

1

应该重写此方法:

@Override 
public void onBindViewHolder(Viewholder holder, int position) { 
    final OrederModel order = orderlist.get(position); 
    GridAdapter gridAdapter = new GridAdapter(context,itemlist); 
    holder.gridView.setAdapter(gridAdapter); 
} 
+0

试试这个代码.. –

+0

每次视图设置 –

+0

谢谢:)ü节省我的时间的时间初始化一个新的适配器 – gautam