当前位置:网站首页>2.RecyclerView基本使用
2.RecyclerView基本使用
2022-08-02 14:05:00 【爱上学习啊】
详解RecyclerView系列文章目录
概述
上篇文章我们简单介绍了什么是RecyclerView,以及他有什么什么优势。那么从这篇文章开始我们就开始一步一步学习RecyclerView的使用方法。实现的效果图如下:
首先使用一个控件的第一步肯定是添加依赖,也就是导入相关的jar或者是aar包,这里我们直接gradle配置,如果你使用的Eclipsee那我只能呵呵了。
添加依赖
这一步你只需要添加RecyclerView的依赖配置,我这里只讲解在Android Studio中配置。
### Gradle
添加如下代码到你的module的build.gradle文件dependencies代码块中
compile 'com.android.support:design:25.2.0'
然后重新build,就可以自动将依赖库引用到你的项目了。接下来就可以使用该控件了。
添加RecyclerView到布局
将下面的布局代码添加到你的xml中:
<android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
当控件都添加完成了后,接下来就需要在代码中配置RecyclerView了。
配置RecyclerView
//如果你知道你的RecyclerView的高度在使用期间不会变化
// 使用此设置可以提高性能,后面会相应的文章分析为什么
rv.setHasFixedSize(true);
//设置一个布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
rv.setLayoutManager(linearLayoutManager);
这里我们找到控件后设置一个布局管理器。所谓布局管理器就是告诉RecyclerView怎样去显示每个Item,这也就是RecyclerView这个控件的精索之一,他将如何显示每个Item,也就是每个Item该如何摆放,抽象到一个叫LayoutManager的类,自定义不同的类就可以显示不同的效果的Item,从而实现类似ListView,GridView和瀑布流等这样的效果。这样做的好处是在不同的布局可以动态改变。
当完成了基本的配置后,我们需要给他设置一个adapter,这和ListView的使用方法是一样的。
设置Adapter
我们先新建一个Adapter,然后继承RecyclerView.Adapter
class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private final LayoutInflater layoutInflater;
public MyAdapter(Context context) {
layoutInflater = LayoutInflater.from(context);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
}
接下来我们就需要实现相应的方法,但是在实现相应的方法前我们还是有必要了解每个方法的用处:
onCreateViewHolder:该方法只有在创建一个ViewHolder的时候调用
onBindViewHolder:该方法在每次要显示一个Item时,调用他,将ViewHolder传递给你,在这里设置你要显示的数据
getItemCount:就是Item的数量
可以看见这里的使用方法和ListView差不多,只是他将我们以前在getView方法中所作的事件分了两步,一步是创建ViewHolder,另一步是绑定要显示的数据。这样用户就不需要像以前害的判断convertView是否为空了。
既然知道了每个方法的用户,接下来就可以实现每个方法了,但是我们发现onCreateViewHolder返回的是ViewHolder,所以我还需要一个ViewHolder类:
创建ViewHolder
class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView tv;
public MyViewHolder(View itemView) {
super(itemView);
tv = (TextView)itemView. findViewById(android.R.id.text1);
}
public void bindData(String d) {
tv.setText(d);
}
}
我们在构造类中找到了TextView,这里也可使用一些框架来避免写findViewById,因为我们现在写的还是基础文章所以就先不搞那么复杂,本系列的后续文章会带大家封装Adapter,ViewHolder等。这里就先搞简单点好理解。
接下来就需要就可以实现Adapter里面的方法方法了。
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MyViewHolder(
layoutInflater.inflate(android.R.layout.simple_list_item_1, parent, false));
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
String d = BasicUseActivity.this.data.get(position);
holder.bindData(d);
}
@Override
public int getItemCount() {
return data.size();
}
然后我们就可以在Activity中设置adapter了。
//设置适配器
MyAdapter myAdapter = new MyAdapter(this);
rv.setAdapter(myAdapter);
接下来就是见证奇迹的时候了,我们可以运行该项目到手机了。查看自己的成果了。
边栏推荐
猜你喜欢
随机推荐
Flask contexts, blueprints and Flask-RESTful
ABP,kendo后台接口,新增,查询
Flask framework
原码、反码、补码和移码
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
我的第一篇博客
每周招聘|PostgreSQL专家,年薪60+,高能力高薪资
C语言一维数组练习——将m个元素移动到数组尾部
MySQL知识总结 (二) 存储引擎
自定义UDF函数
PHP版本切换:5.x到7.3
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第九章)
uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十章)
什么是 Web 3.0:面向未来的去中心化互联网
无人驾驶综述:国外国内发展历程
C语言日记 4 变量
Raj delivery notes - separation 第08 speak, speaking, reading and writing
drf serializer - Serializer
VS Code远程开发及免密配置