前言
在Android开发中,我们经常与ListView、GridView打交道,它们为数据提供了列表和视图的展示方式,方便用户的操作。然而,随着Android的不断发展,单一的listview逐渐满足不了需求多变的项目了,因此,谷歌在support v7中,加入了新的控件——RecyclerView,该控件整合了ListView、GridView的特点,而且最大的优点是可以很方便实现瀑布流效果,因此RecyclerView受到越来越多的开发者重视。所以,学习RecyclerView的使用也是很有必要的。
问题专栏:
一、今天在写RecycleView时一个穿参数定义的int[] num类型,直接将用textview num.setText(book_data_list.getNum());出现了以下的报错:android.content.res.Resources$NotFoundException: String resource ID #0x1 at android.content.res.HwResources.getText(HwResources.java:1553)
解决办法:是由于TextView的类型是String的而我定义的num是int类型的要进行转化一下:
num.setText(book_data_list.getNum()+"")
二、RecycleView中的网格布局GridLayoutManager出现了上下的距离过大的问题,上一个效果图看:
在百度之后我发现是自己的布局里面的LinearLayout中的layout_height:match_parent;将layout_height:wrap_parent就可以了,一个小细节真的是毁了我太多的温柔!还是把修改后的xml代码贴出来:(选中的那一行代码)
修改后的效果图:
进入正题,今天是RecyclerView的网格布局:
一、先看recommond.xml代码:
<Relative中的android:background="@drawable/border_radiu"是drawable文件下的一个样式,将他的代码直接贴过来就是一个圆角样式:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="15dp"></corners>
<solid android:color="@color/darkgray"></solid>
</shape>
二、Recommond.java:
三、RecycleView的布局代码:
四、RecycleView的adapter代码:
datasource是存放我们数据的集合,<Book_Data>是传入的数据类型为Book_Data,是获取数据的get set方法。接下里贴上Book_Data的代码: