android 给多列的RecycleView添加头布局
来源:互联网 发布:cfd软件 编辑:程序博客网 时间:2024/05/20 10:21
在工作中遇到商城类的界面,界面上半部分是viewpager,下部分是多列的GridView,具体实现:
1、在设置RecycleView的manager时使用GridlayoutManager的
setSpanSizeLookup属性设置头布局所占的宽度:
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { if (position == 0) { return 头布局所占的个数; } else { return 1; } }});
在Adapter中给RecycleView.Adapter设置一个setHeadView()方法,在adapter中接收头布局,然后在判断条目的类型时如果是头的话,就直接将view添加进去,如果是正常的条目,就按正常的加。
具体代码:
GridLayoutManager manager = new GridLayoutManager(getContext(), 2);manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { if (position == 0) { return 3; } else { return 1; } }});manager.setOrientation(LinearLayoutManager.VERTICAL);recycleview.setLayoutManager(manager);mAdapter = new MyRecycleAdapter(getContext(), list);// headView = View.inflate(getContext(), R.layout.shop_head, null);headView = new Recycle(getContext());//设置轮播图的图片headView.setImages(images);// initHeadView();mAdapter.addHeadView(headView);recycleview.setAdapter(mAdapter);
adapter代码:
public class MyRecycleAdapter extends RecyclerView.Adapter<MyRecycleAdapterHolder> { private View headView; private Context mContext; private List<String> count; public MyRecycleAdapter(Context mContext, List<String> list ) { this.count = list; this.mContext = mContext; } /** * 设置数据源总的条目 */ @Override public int getItemCount() { //返回条目数加头布局个数 return count==null? 2:count.size()+2; } @Override public void onBindViewHolder(MyRecycleAdapterHolder holder, final int position) { int itemViewType = getItemViewType(position); // 头部 if (itemViewType == ShopFragment.HEADER_RECYCLER_VIEW_ITEM) { return; } else if (itemViewType == ShopFragment.NORMAL_RECYCLER_VIEW_ITEM) {//普通条目 /*holder.iv_add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, "添加购物车", Toast.LENGTH_SHORT).show(); if (mOnImageClickListener != null) { mOnImageClickListener.onClick(); } } });*/ holder.pic.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(mContext, ShowActivity.class); Bundle bundle = new Bundle(); bundle.putInt("Item", i); intent.putExtra("fragment", DetailFragment.class); mContext.startActivity(intent); } }); } } @Override public MyRecycleAdapterHolder onCreateViewHolder(ViewGroup parent, int viewType) { View root = null; if (viewType == ShopFragment.HEADER_RECYCLER_VIEW_ITEM) { root = headView; } else { root = LayoutInflater.from(mContext).inflate(R.layout.shop_item_adapter, parent, false); } return new MyRecycleAdapterHolder(root, viewType); } /** * 添加自定义头部 */ public void addHeadView(View view) { this.headView = view; } @Override public int getItemViewType(int position) { if (position == 0) { return ShopFragment.HEADER_RECYCLER_VIEW_ITEM; } else { return ShopFragment.NORMAL_RECYCLER_VIEW_ITEM; } } private OnImageClickListener mOnImageClickListener; public void setOnItemClickListener(OnImageClickListener listener) { mOnImageClickListener = listener; } public interface OnImageClickListener { void onClick(); }}
0 0
- android 给多列的RecycleView添加头布局
- 给recycleview添加头布局并能点击item多个子控件
- RecycleView添加头布局显示异常的问题
- Android RecycleView 的多布局
- Android recycleview 多布局
- android RecycleView复杂多条目的布局
- recycleview的头布局和尾部局
- RecycleView的多布局
- recycleView的多布局
- Recycleview 多布局添加和cardview使用
- android ListView添加头布局
- RecycleView 的多条目布局
- 【RecycleView加分割线】Android RecycleView列表布局添加分割线如此简单
- android账本-添加listview,列头
- RecycleView添加条目布局match_parent失效的问题
- RecycleView在中间“插入”布局以及添加头部的姿势
- Recycleview 在头布局里嵌套Listview
- RecyclerView的多条目加载,添加头布局
- 猜字母
- 修改docker中的镜像源
- 使用Vector模拟实现STL中的stack
- 那些年我们一起撸过的缓存写法
- Java多线程-基本使用
- android 给多列的RecycleView添加头布局
- PhpStorm中快捷键总结,附详细使用说明
- 位运算符
- Qt:Quick:QAbstractTableModel的使用示例
- Yarn
- MyBatis的Mapper接口以及Example的实例函数及详解
- 给程序员简历的一些建议
- feature extraction
- L1-006. 连续因子