高级控件
ListView
ListView是我们Android中最常用的控件, 由于我们的手机屏幕空间有限,能够一次性在屏幕上显示的内容并不多,我们程序有大量的数据需要展示的时候,我们就需要使用ListView实现,允许用户通过手指上下滑动。
简单用法
首先在activit_main.xml中编写代码
然后再MainActivity中编写代码:
定制界面
显示文字的界面太单调了,我们对ListView来进行定制。
我们首先创建一个是类,叫做Fruit,有两个字段,一个是name,水果的名字,一个是imageId,表示水果对应图片的资源id
需要为ListView的子项指定一个我们自定义的布局,新建一个fruit_item.xml代码如下:
创建一个自定义的适配器的类,这个适配器继承ArrayAdapter,并将泛型指定为Fruit类。
改写MainActivity.xml
提升效率
由于ListView的特点,FruitAdapter的getView方法,每次都将布局加载一遍。ListView快速滚动的时候,就会成为性能的瓶颈。
getView中还有一个参数是converView,这个参数用于将之前加载好的布局进行缓存,以便之后重用
进一步优化:
ListView的点击事件
我们来为ListView里面的每个事件点击事件,
RecyclerView
RecyclerView是一个增强版ListView,比ListView功能还要强大
使用RecycleView先要导入对应的依赖
implementation 'androidx.recyclerview:recyclerview:1.0.0'
RecyclerView的用法
在activiti_main中编写下面的代码:
编写FruitAdapter适配器
编写MainActivity代码
实现横向滚动和瀑布流布局
上述只是实现和ListView一样的效果,我们现在来实现横向滚动效果,首先修改furit_item布局
其次修改一下Mainactivity:
区别:ListView的布局排列是由自身去管理的,而RecycleView将和这个工作交给了LayoutManager,LayoutManger定制了一套可扩展布局的排列接口,子类只要按照接口的规范来设置,就能定制出各种不同方式的布局。
RecyclerView还为我们提供了GridLayoutManger和StaggeredGridLayoutManger
看瀑布布局的样式,瀑布布局是根据列数来自动适配的,而不是一个固定值。
我们首先修改fruit_item.xml中的代码:
其次我们修改Mainactivity中的代码:
RecyclerView点击事件
RecycleView没有自己定义点击事件,需要我们自己给子项具体的View去注册事件。
修改FruitAdapter代码: