recyclerView的瀑布流形式

来源:互联网 发布:淘宝发表论文可靠吗 编辑:程序博客网 时间:2024/06/05 09:25

//首先获取控件

 recyclerView = findViewById(R.id.recycler_view);
        //数据
        list = new ArrayList<>();
        for (int i=0; i<1000;i++){
            list.add("这是条目"+i);
        }

        //设置布局管理器..staggered错位的 错乱的
        recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, OrientationHelper.VERTICAL));

        //给recyclerView设置增删的动画....默认使用动画的
        //new DefaultItemAnimator()这个是默认的动画,,,设置与不设置都会有
        //recyclerView只给我们提供了这一种默认的动画,,,,,https://github.com/gabrielemariotti/RecyclerViewItemAnimators
        recyclerView.setItemAnimator(new DefaultItemAnimator());


        //设置适配器
        waterFallAdapter = new WaterFallAdapter(SecondActivity.this, list);
        recyclerView.setAdapter(waterFallAdapter);

//其中添加和删除一个表
   public void add(View view) {
        list.add(5,"哈哈哈哈");
        //waterFallAdapter.notifyDataSetChanged();
        waterFallAdapter.notifyItemInserted(5);
    }

    public void delete(View view) {

        list.remove(5);
        //waterFallAdapter.notifyDataSetChanged();
        waterFallAdapter.notifyItemRemoved(5);
    }

/*******************************适配器中:
//获取传过来的值和随机高度的设置
 public WaterFallAdapter(Context context, ArrayList<String> list) {
        this.context = context;
        this.list = list;
        heightList = new ArrayList<>();
        for (int i= 0;i<list.size();i++){
            heightList.add((int) (Math.random()*100+200));
        }

    }

//************重写三个方法
 @Override
    public WaterHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        //1.打气筒创建视图
        View view = LayoutInflater.from(context).inflate(R.layout.item_water_layout, parent, false);
        //2.创建视图绑定的holder
        WaterHolder holder = new WaterHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(WaterHolder holder, int position) {
        //先获取到textView身上的布局参数
        ViewGroup.LayoutParams layoutParams = holder.textView.getLayoutParams();
        layoutParams.height = heightList.get(position);

        //设置背景颜色
        holder.textView.setBackgroundColor(Color.rgb((int)(Math.random()*100+155),(int)(Math.random()*100+155),(int)(Math.random()*100+155)));

        holder.textView.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return list.size();
    }



原创粉丝点击