在recyclerview

时间:2017-05-29 15:07:41

标签: android gridview android-recyclerview

//我正在尝试实现此处显示的设计。在此设计中,我必须动态填充食物项列表,因为我在recyclerview中使用了gridview。

enter image description here

//这就是我解析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对应的项目数。

1 个答案:

答案 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);
}