Android RecyclerView添加头部与尾部
来源:互联网 发布:淘宝店流量是什么意思 编辑:程序博客网 时间:2024/05/21 06:32
RecyclerView一个艺术般的控件,完全取代了之前的ListView与GridView,并且有着比ListView与GridView更加强大的功能,可是RecyclerView缺有个非诚明显的瑕疵,竟然没有封装addHeaderView和addFooterView方法,没办法只好自己想办法实现了:
核心代码:
private class RecyclerAdapter extends RecyclerView.Adapter{ private final static int HEAD_COUNT = 1; private final static int FOOT_COUNT = 1; private final static int TYPE_HEAD = 0; private final static int TYPE_CONTENT = 1; private final static int TYPE_FOOTER = 2; public int getContentSize(){ return list.size(); } public boolean isHead(int position){ return HEAD_COUNT != 0 && position == 0; } public boolean isFoot(int position){ return FOOT_COUNT != 0 && position == getContentSize() + HEAD_COUNT; } @Override public int getItemViewType(int position) { int contentSize = getContentSize(); if (HEAD_COUNT != 0 && position == 0){ // 头部 return TYPE_HEAD; }else if(FOOT_COUNT != 0 && position == HEAD_COUNT + contentSize){ // 尾部 return TYPE_FOOTER; }else{ return TYPE_CONTENT; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_HEAD){ View itemView = LayoutInflater.from(GridActivity.this).inflate(R.layout.head_for_recyclerview,parent,false); return new RecyclerAdapter.HeadHolder(itemView); }else if(viewType == TYPE_CONTENT){ View itemView = LayoutInflater.from(GridActivity.this).inflate(R.layout.item_for_recycler_view,parent,false); return new RecyclerAdapter.ContentHolder(itemView); }else{ View itemView = LayoutInflater.from(GridActivity.this).inflate(R.layout.foot_for_recyclerview,parent,false); return new RecyclerAdapter.FootHolder(itemView); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof RecyclerAdapter.HeadHolder){ // 头部 }else if(holder instanceof RecyclerAdapter.ContentHolder){ // 内容 RecyclerAdapter.ContentHolder myHolder = (RecyclerAdapter.ContentHolder) holder; myHolder.itemText.setText(list.get(position - 1)); }else{ // 尾部 } } @Override public int getItemCount() { return list.size() + HEAD_COUNT + FOOT_COUNT; } // 头部 private class HeadHolder extends RecyclerView.ViewHolder{ public HeadHolder(View itemView) { super(itemView); } } // 内容 private class ContentHolder extends RecyclerView.ViewHolder{ TextView itemText; public ContentHolder(View itemView) { super(itemView); itemText = (TextView)itemView.findViewById(R.id.item_text); } } // 尾部 private class FootHolder extends RecyclerView.ViewHolder{ public FootHolder(View itemView) { super(itemView); } } }
此时只需要将此适配器设为RecyclerView的列表模式的适配器就OK了.
表格模式需要增加这么一步:
final GridLayoutManager manager = new GridLayoutManager(this,3);recyclerView.setLayoutManager(manager);adapter = new RecyclerAdapter();recyclerView.setAdapter(adapter);manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return adapter.isFoot(position) || adapter.isHead(position) ? manager.getSpanCount() : 1; }});
完整代码:http://download.csdn.net/detail/y472360651/9838484
0 0
- Android RecyclerView添加头部与尾部
- RecyclerView添加头部尾部
- Android RecyclerView添加头部和尾部
- Android RecyclerView添加头部和尾部
- Android 给RecyclerView添加头部和尾部
- RecyclerView添加头部和尾部
- RecyclerView添加头部和尾部
- RecyclerView 添加头部和尾部布局
- RecyclerView LayoutManager分析 添加头部尾部
- RecyclerView 添加头部和尾部布局
- RecyclerView 添加头部和尾部布局
- 为RecyclerView添加头部和尾部
- recyclerview 添加头部和尾部的优雅
- 实战RecyclerView头部尾部添加方法
- Android RecyclerView添加头部
- (4.1.45.1)RecyclerView 添加头部和尾部布局 一
- RecyclerView学习(1) 添加头部和尾部
- RecyclerView系列(一)添加头部、尾部View
- Background Indexer Crash Recovery java.lang.StackOverflowError
- iOS单例模式
- rebar 使用测试【转】
- 一次循环删除std::vector元素的方法
- free命令中cached和buffers的区别
- Android RecyclerView添加头部与尾部
- 使用cxf整合spring出现Cannot create URL for this address
- 用 LDA 做主题模型:当 MLlib 邂逅 GraphX
- android fragment 标签使用
- 458. poor pigs
- iframe与主框架跨域访问
- Python——os模块
- 在开发中经常用到的一些sql语句,但相对比较复杂一些的
- 66. Plus One