RecyclerView的使用及理解

最近学习了一个强大的控件。这个控件是可以实现ListView和gradeview还有瀑布流的效果。而这三种效果的实现只需要改变RecyclerView的布局管理器即可,所以他已经取代了ListView和网格布局。我们在使用这个控件的时候需要自己导入RecyclerView的V7依赖,二在我们到入依赖之后,有的版本,会报错,这是因为studio的版本和RecyclerView的版本不一致造成的,所以我们要办版本号改成同意的。解决完这个问题后我们进入整体,在布局文件打出控件,然后在mainActivity中初始化控件,创年一个布局管理器,在创建一个适配器,最后将适配器关联绑定到初始化的控件上。

我们在初始化数据的过程需要定义一个方法initData();这个方法是用来给RecyclerView加载 数据y用的,我们可以联网通过异步请求并解析网络数据,也可以自一定义思数据,今天我们检点一自己定义的思数据为讲解,利用for循环加载多天数据。然后创建自己的适配器,这里的适配器需要注意,因为他继承的RecyclerView,所以应该是extend RecyclerView.adapter。然后我们这个适配器中同样需要创建一个ViewHolder帮助类,这里的棒垒钰以往的也有所不同,他同样需要继承RecyclerView的。之后我们就可以棒适配器的反省写成自己定义的adapter.上MyViewHOlder了。

我们在来分别看一下adapter里面的几个重写的方法。来分析一下他们都是来做什么的。

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //找到item的布局
    View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
    //将布局设置给holder
    return new MyViewHolder(view);
}
这个方法是用来找到item布局并将布局设置给ViewHolder的,这里我用瀑布流布局来解释。在实现普布洛的时候需要注意一点就是会产生跟图片陪陪的随机高度,这个高度在重新刷新之后可能会对原来的屏幕不适配,也就是多会有顶部的白快,那我们来怎样解决这个问题呢。
绑定视图到holder,就如同ListView的getView(),但是这里已经把复用实现了,我们只需要填充数据就行.
由于在复用的时候都是调用该方法填充数据,但是上滑的时候,又会随机产生高度设置到控件上,这样当滑
到顶部可能就会看到一片空白,因为后面随机产生的高度和之前的高度不一样,就不能填充屏幕了,所以
需要记录每个控件产生的随机高度,然后在复用的时候再设置上去
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    if(position%3==0){
        holder.tv.setBackgroundColor(Color.RED);
    }else if(position%3==1){
        holder.tv.setBackgroundColor(Color.BLUE);
    }
    else if (position%3==2){
        holder.tv.setBackgroundColor(Color.GREEN);
    }

    //填充数据
    holder.tv.setText(list.get(position)+"");
    //动态的改变控件的高度从而实现瀑布流的效果
    ViewGroup.LayoutParams params = holder.tv.getLayoutParams();
    params.height = heightlist.get(position);
    holder.tv.setLayoutParams(params);
}
这个方法是用来绑定holder里面的控件用的,也就是所谓的填充数据
@Override
public int getItemCount() {
    return list.size();
}

这个方法大家都在熟悉不过里,是用来获取item天目数用的。在这里我们为了提高代码的质量,最好做一个非空判断。然后在绑定我们就打工搞成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值