RecycleView 也可以实现ListView 的功能并且比listview更加的强大,可是说是listView的增强版,并且Android官方更加推荐使用RecycleView。
基本用法
在gradle 中添加配置文件,这样在引用的时候,才会有提示,否则 RecycleView会显示红色报错
布局文件的代码贴出来:
<LinearLayout
android:id="@+id/activity_main"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/id_recycleview"/>
</LinearLayout>
接下来和listview差不多,需要initData()的方法初始化数据,然后需要写Adapter,这个和原来listview有很大的需别
比如:Holder已经变成RecycleView的一个内部类,不需要自己再去创建只需要继承就好.
原来需要覆写的Adapter的getview()方法也被拆开了
分成 createViewHolder和bindViewHolder 这两个方法
这 @Override
public PhotoAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int i) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.item,parent,false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(PhotoAdapter.ViewHolder viewHolder, int i) {
Bean bean = beans.get(i);
viewHolder.photoImage.setImageResource(bean.getId());
viewHolder.photoContext.setText(bean.getContent());
}
为什么RecycleView 比 Listview 更高效呢?
先来看一下两者的区别
这个是我们刚才没有讲到的getItemViewType方法,它保存数据的类型,根据不同的数据类型找到不同的Holder来展示。当我们需要复用时,holder会从cache里面拿到holder,进而实现使用流畅。
ListView 只能竖向滑动,RecycleView 横竖都可以
因为ListView 的布局排列是由自身去管理的,而RecycleView则将这个工作交给了LayoutManager,LayoutManager中制定了一套可扩展的布局排列接口,子类只要按照接口的规范来实现,就能定制出各种不同排列方式的布局来。
它可以实现横向滚动和瀑布流布局。
Recycleview的点击事件