1,学习网址:
sticky-headers-recyclerview
2, 依赖
compile 'com.timehop.stickyheadersrecyclerview:library:[0.4.3]@aar'
3,代码
mRvEquipmentRecycle.setAdapter(mAdapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(EquipmentActivity.this, 3);
mRvEquipmentRecycle.setLayoutManager(gridLayoutManager);
// 下面这个必须添加
mRvEquipmentRecycle.addItemDecoration(new StickyRecyclerHeadersDecoration(mAdapter));
4,adapter
package com.vily.shoes.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersAdapter;
import com.vily.shoes.R;
import com.vily.shoes.bean.Equipment;
import java.util.List;
/**
* description :
* Author : Vily
* Date : 2018/01/07
* Time : 12:26
*/
public class EquipmentAdapter extends RecyclerView.Adapter<EquipmentAdapter.MyViewHolder> implements StickyRecyclerHeadersAdapter<EquipmentAdapter.HeaderViewHolder> {
private List<Equipment> mEquipList;
private LayoutInflater mInflater;
private Context mContext;
public EquipmentAdapter(Context context,List<Equipment> equipList) {
this.mEquipList=equipList;
this.mContext=context;
mInflater=LayoutInflater.from(context);
}
@Override
public int getItemCount() {
return mEquipList.size();
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.layout_equipent_list, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
}
class MyViewHolder extends RecyclerView.ViewHolder{
public MyViewHolder(View itemView) {
super(itemView);
}
}
@Override
public long getHeaderId(int position) {
// 根据左边鞋子的尺寸归类
return mEquipList.get(position).getShoesSizeLeft();
}
@Override
public HeaderViewHolder onCreateHeaderViewHolder(ViewGroup parent) {
View view = mInflater.inflate(R.layout.layout_equipent_list_header, parent, false);
return new HeaderViewHolder(view);
}
@Override
public void onBindHeaderViewHolder(HeaderViewHolder holder, int position) {
}
class HeaderViewHolder extends RecyclerView.ViewHolder{
public HeaderViewHolder(View itemView) {
super(itemView);
}
}
}
5,BUG :如果头部布局显示不出来 可能是宽度width的缘故 可以试着将width先设置成 固定的值 例如: 100dp 试试