recycleView瀑布流

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);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/wangyonghao132/article/details/85160669
今日推荐