RecyclerView的使用及理解
来源:互联网 发布:贵阳浪人网络 编辑:程序博客网 时间:2024/06/07 10:59
最近学习了一个强大的控件。这个控件是可以实现ListView和gradeview还有瀑布流的效果。而这三种效果的实现只需要改变RecyclerView的布局管理器即可,所以他已经取代了ListView和网格布局。我们在使用这个控件的时候需要自己导入RecyclerView的V7依赖,二在我们到入依赖之后,有的版本,会报错,这是因为studio的版本和RecyclerView的版本不一致造成的,所以我们要办版本号改成同意的。解决完这个问题后我们进入整体,在布局文件打出控件,然后在mainActivity中初始化控件,创年一个布局管理器,在创建一个适配器,最后将适配器关联绑定到初始化的控件上。
我们在初始化数据的过程需要定义一个方法initData();这个方法是用来给RecyclerView加载 数据y用的,我们可以联网通过异步请求并解析网络数据,也可以自一定义思数据,今天我们检点一自己定义的思数据为讲解,利用for循环加载多天数据。然后创建自己的适配器,这里的适配器需要注意,因为他继承的RecyclerView,所以应该是extend RecyclerView.adapter。然后我们这个适配器中同样需要创建一个ViewHolder帮助类,这里的棒垒钰以往的也有所不同,他同样需要继承RecyclerView的。之后我们就可以棒适配器的反省写成自己定义的adapter.上MyViewHOlder了。
我们在来分别看一下adapter里面的几个重写的方法。来分析一下他们都是来做什么的。
这个方法是用来找到item布局并将布局设置给ViewHolder的,这里我用瀑布流布局来解释。在实现普布洛的时候需要注意一点就是会产生跟图片陪陪的随机高度,这个高度在重新刷新之后可能会对原来的屏幕不适配,也就是多会有顶部的白快,那我们来怎样解决这个问题呢。@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //找到item的布局 View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false); //将布局设置给holder return new MyViewHolder(view);}
绑定视图到holder,就如同ListView的getView(),但是这里已经把复用实现了,我们只需要填充数据就行.由于在复用的时候都是调用该方法填充数据,但是上滑的时候,又会随机产生高度设置到控件上,这样当滑到顶部可能就会看到一片空白,因为后面随机产生的高度和之前的高度不一样,就不能填充屏幕了,所以需要记录每个控件产生的随机高度,然后在复用的时候再设置上去这个方法是用来绑定holder里面的控件用的,也就是所谓的填充数据@Overridepublic 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);}
@Overridepublic int getItemCount() { return list.size();}
这个方法大家都在熟悉不过里,是用来获取item天目数用的。在这里我们为了提高代码的质量,最好做一个非空判断。然后在绑定我们就打工搞成了
- RecyclerView的使用及理解
- 简单理解Recyclerview的使用
- RecyclerView及SwipeRefreshLayout的使用
- 一篇博客理解Recyclerview的使用
- RecyclerView的使用及配合CardView使用
- 使用RecyclerView遇到的问题及解决
- RecyclerView 的使用及常用技巧(一)
- RecyclerView的学习理解
- RecyclerView的学习理解
- RecyclerView的理解
- RecyclerView+RecyclerView.Adapter+RecyclerView.ViewHolder的使用
- Recyclerview的一些个人理解与使用(五)Recyclerview的联动,时间选择的实现
- Recyclerview的一些个人理解与使用(六)Recyclerview的分段加载
- Recyclerview的一些个人理解与使用(七)Recyclerview的嵌套与增加删除
- 理解RecyclerView的RecyclerView.ItemDecoration(一)
- 理解RecyclerView的RecyclerView.ItemDecoration(二)
- RecyclerView的基本使用、RecyclerView万能adapter及多条目的实现
- android RecyclerView使用及详解
- 神经网络基础知识
- How to get root access for other users with the visudo
- HDU 5125 Magic Balls DP(LIS变形)
- HDU2665 主席树原理解决静态区间第K大值问题总结 有详细图解和代码解释
- Android自定义View的实现方式(三种)
- RecyclerView的使用及理解
- tensor flow学习网站
- 剑指offer之数组中数字出现一次
- leetcode 365. Water and Jug Problem 两个水杯倒水问题 + Gcd辗转相除法
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 Minimum
- 综合指南: 何时使用 Em 与 Rem
- Redis持久化方法
- iOS成长之路-- XCode工程中 Project 和 Targets区别
- 什么是P问题、NP问题和NPC问题