2016-06-07 43 views
2

到recyclerView添加报头我有JSON其转换成模型动态地从数组列表使用排序

Arraylist<model> data 

所以我要在JSON添加标头,如每类型因此,如果有2个不同的类型中的ArrayList然后将有在recyclerView中的2个标题和作为列表的相关数据。所以当前的例子中我有2 TYP2 - 1)名称2)的值,所以我怎样才能在对recyclerView添加2标头,然后将具有类型名

JSON

{ 
"info": [ 
    { 
     "Id": 12, 
     "Name": "hi", 
     "Type": "name" 
    }, 
    { 
     "Id": 1, 
     "Name": "hi1", 
     "Type": "name" 
    }, 
    { 
     "Id": 13, 
     "Name": "hi", 
     "Type": "value" 
    }, 
    { 
     "Id": 15, 
     "Name": "hi3", 
     "Type": "name" 
    }, 
    { 
     "Id": 16, 
     "Name": "hi", 
     "Type": "value" 
    }, 
    { 
     "Id": 20, 
     "Name": "hi5", 
     "Type": "value" 
    }, 
    { 
     "Id": 24, 
     "Name": "bye", 
     "Type": "name" 
    }, 
    { 
     "Id": 12, 
     "Name": "hi", 
     "Type": "name" 
    } 
] 

} See image fro details

回答

7
所有数据

我假设你的布局设计已经准备好作为你给定的图像链接。基本上你需要02布局设计,其中一个是标题&另一个是在每个项目的页脚。现在,您可以使用您的适配器动态添加标头,如下所示:

public class YourRecyclerViewAdapter extends RecyclerView.Adapter { 

    private final int VIEW_ITEM_HEADER = 1; // type: name/value 
    private final int VIEW_ITEM_FOOTER = 0; 

    private List<PojoModel> mData; 
    private Context mContext; 

    public YourRecyclerViewAdapter(Context context, List<PojoModel> data)  { 
     this.mContext = context; 
     this.mData = data; 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     RecyclerView.ViewHolder viewHolder; 
     if (viewType == VIEW_ITEM_HEADER) { 
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_header, parent, false); 
      viewHolder = new HeaderHolder(view); 
     } else { 
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer, parent, false); 
      viewHolder = new FooterHolder(view); 
     } 
     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     PojoModel item = mData.get(position); 
     if (holder instanceof HeaderHolder) { 
      HeaderHolder mHolder = (HeaderHolder)holder; 
      // do your stuff 
     } else { 
      FooterHolder mHolder = (FooterHolder)holder; 
      // do your stuff 
     } 
    } 

    @Override 
    public int getItemViewType(int position) { 
     return mData.get(position) != null ? VIEW_ITEM_HEADER : VIEW_ITEM_FOOTER; 
    } 

    @Override 
    public int getItemCount() { 
     return mData.size(); 
    } 

    public class HeaderHolder extends RecyclerView.ViewHolder { 

     public HeaderHolder(View itemView) { 
      super(itemView); 
      // declare your header views 
     } 
    } 

    public class FooterHolder extends RecyclerView.ViewHolder { 

     public FooterHolder(View itemView) { 
      super(itemView); 
      // declare your footer views 
     } 
    } 
} 
+0

好吧,但如何添加标题,如果我需要将回收站视图分为2列?如何做标题占用2列的空间? –