1.初始化组件
2.设置LayoutManager
setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
2---为每行几个
第二个参数设置方向
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
recyclerView.setAdapter(new Adapter());
recyclerView.setItemAnimator(new DefaultItemAnimator());
3.可添加动画
4.设置适配器
4.1定义适配器
继承RecyclerView.Adapter<Adapter.MyViewHolder>
小技巧:在写泛型前准备好ViewHlder MyViewHolder 继承RecyclerView.ViewHolder
之后填入泛型 实现RecyclerView.Adapter中的方法
ps:这样在实现方法时,传递的viewholder自动生成
4.2实现方法
onCreateViewHolder 中创建viewholder视图 通过布局加载器与布局文件关联
onBindViewHolder 给组件绑定数据
getItemCount 返回数据大小
class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyViewHolder myViewHolder = new MyViewHolder(LayoutInflater.from(DataActivity.this).inflate(R.layout.iten, parent, false));
return myViewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
ViewGroup.LayoutParams params = holder.cardView.getLayoutParams();
params.height = (int) (100 + Math.random() * 300);
params.width=width1/2;
holder.cardView.setLayoutParams(params);
holder.textView.setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView;
CardView cardView;
public MyViewHolder(View itemView) {
super(itemView);
cardView = (CardView) itemView.findViewById(R.id.cardView);
textView = (TextView) itemView.findViewById(R.id.textView);
}
}