基本使用:
1.初始化 findviewbyid....
2.setLayoutManager();通过设置布局管理器控制其显示方式
2.1线性布局LinearLayoutManagersetLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false));可以只传第一个参数context,第二个参数表示水平布局,第三个参数表示是否反转,false表示不反转,true表示item反转显示,即从右到左依次显示item;
2.2表格布局GridLayout setLayoutManager(new GridLayoutManager(this,3,GridLayoutManager.HORIZONTAL,false)); 参数一,context;参数二,int型,表示表格有几(行)列;参数三,设置表格水平(垂直)显示;参数四,反转;
2.3瀑布流 StaggeredGridLayoutManager
setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.HORIZONTAL));
设置网格行、列数、显示方式
3.关联adapter
public class HeadImageAdapter extends RecyclerView.Adapter<HeadImageAdapter.MyHolder> { private Context mContext; private List<UserList> mHeadImageInfos; public HeadImageAdapter(Context context, List<UserList> headImageInfos) { mContext = context; mHeadImageInfos = headImageInfos; } public interface ItemClickListener{ void onItemClick(View view, int pos); } public void setItemClickListener(ItemClickListener itemClickListener){ mItemClickListener = itemClickListener; } private ItemClickListener mItemClickListener = new ItemClickListener() { @Override public void onItemClick(View view, int pos) { } }; @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_head_image, parent, false); MyHolder holder = new MyHolder(view); return holder; } @Override public void onBindViewHolder(MyHolder holder, int position) { Glide.with(mContext).load(mHeadImageInfos.get(position).head).into(holder.mHeadImage); } @Override public int getItemCount() { return mHeadImageInfos.size(); } public void addHeadImages(List<UserList> headImageInfos){ // int len = mHeadImageInfos.size(); mHeadImageInfos.clear(); mHeadImageInfos.addAll(headImageInfos); notifyDataSetChanged(); // notifyItemRangeInserted(len, mHeadImageInfos.size()-len); } public class MyHolder extends RecyclerView.ViewHolder { @BindView(R.id.head_image) CircleImageView mHeadImage; public MyHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); mHeadImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mItemClickListener.onItemClick(v, getAdapterPosition()); } }); } } }
setAdapter(adapter);
4.设置Item增加、移除动画(可选)
setItemAnimator();
5.添加分割线(可选)
addItemDecoration(ItemDecoration decor);//可以自行定义一个类继承RecycleView.ItemDecoration类,对item间的间距进行控制 public class SpaceItemDecoration extends RecyclerView.ItemDecoration{ private int space; public SpaceItemDecoration(int space) { this.space = space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { //设置左右的间隔 if((parent.getChildPosition(view)+2)%2==0){ outRect.left = 2*space; } // outRect.left = space; // System.out.println("position"+parent.getChildPosition(view)); // System.out.println("count"+parent.getChildCount()); // if(parent.getChildPosition(view) != parent.getChildCount() - 1) // outRect.bottom = space; if(parent.getChildPosition(view) != 0) outRect.top = space; } }