Main:
public class StaggDemoActivity extends AppCompatActivity {
private RecyclerView mRecy;
private ArrayList<BeautyBean> mList = new ArrayList<>();
private int[] mImages = {R.mipmap.meinv, R.mipmap.xingan, R.mipmap.meizi};
private BeautyAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stagg_demo);
initViews();
initData();
mAdapter = new BeautyAdapter(mList, this);
mRecy.setAdapter(mAdapter);
}
private void initViews() {
mRecy = findViewById(R.id.Stagg_Recy);
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
mRecy.setLayoutManager(staggeredGridLayoutManager);
//这个地方是默认加上的
mRecy.setItemAnimator(new DefaultItemAnimator());
}
private void initData() {
for (int i = 0; i < 20; i++) {
mList.add(new BeautyBean("么么哒" + i, mImages[i % mImages.length]));
}
}
}
adapter:
public class BeautyAdapter extends RecyclerView.Adapter<BeautyAdapter.ViewHolder> {
private ArrayList<BeautyBean> mList;
private Context mContext;
public BeautyAdapter(ArrayList<BeautyBean> mList, Context mContext) {
this.mList = mList;
this.mContext = mContext;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//如果用到瀑布流 因为需要改里面高度,所以要把ViewGroup放进去 所以就用LayoutInflater就好
// View view = View.inflate(mContext, R.layout.beauty_item, viewGroup);
View view = LayoutInflater.from(mContext).inflate(R.layout.beauty_item, viewGroup, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
BeautyBean bean = mList.get(i);
ViewGroup.LayoutParams params = viewHolder.itemView.getLayoutParams();
Random random = new Random();
int height = random.nextInt(300) + 300;
params.height = height;
viewHolder.itemView.setLayoutParams(params);
viewHolder.mImage.setImageResource(bean.getImage());
}
@Override
public int getItemCount() {
return mList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView mImage;
public ViewHolder(@NonNull View itemView) {
super(itemView);
mImage = itemView.findViewById(R.id.Beauty_Image);
}
}
}