Android高级控件(二)

①自定义适配器
之前我们已经讲过两个适配器
一个ArrayAdapter
一个SimpleAdapter
接下来给大家讲讲自定义适配器

拿ListView列表可以传多个参数的举例:

先写一个xml页面

Android高级控件(二)_第1张图片

在java文件中根据id得到控件

Android高级控件(二)_第2张图片

得到多组数据

Android高级控件(二)_第3张图片

下一步就是适配器
现在我们需要达到这样一个效果

图片+文字+按钮

Android高级控件(二)_第4张图片

所以我们需要先写一个样式文件
item_list.xml

android:descendantFocusability="blocksDescendants"
是为了解决ListView中按钮的点击事件和列表的点击事件冲突的问题
(按钮有效有效
列表点击无效)

TextView中的
android:layout_width="0dp"

android:layout_weight="1"
是为了让下载按钮在屏幕的最右边

Android高级控件(二)_第5张图片

所以之前的SimpleAdapter不能满足我们题目的要求了
现在我们自己写一个适配器

写一个类继承BaseAdapter
重写里面的4个方法

Android高级控件(二)_第6张图片 Android高级控件(二)_第7张图片

给控件设置适配器

Android高级控件(二)_第8张图片

这样我们的自定义适配器就完成了

②ListView的优化
为什么要优化:

解决OOM问题
outofMemory内存溢出

当数据量过多时应用程序会停止运行

现在我们把行数改为10000

Android高级控件(二)_第9张图片

由于我们没有那么多数据
所以我们现在循环利用titles和images这两个数组

只需要在所有使用到数组的地方加上%titles.length即可(一定是所有用到的地方)

比如:

Android高级控件(二)_第10张图片

现在我们有10000条测试数据了

下面我们对ListView进行优化

先新建一个ItemTag.java文件
(相当于一个实体类)

Android高级控件(二)_第11张图片

修改自定义适配器中的方法

Android高级控件(二)_第12张图片 Android高级控件(二)_第13张图片

这样就优化好了

③下拉刷新
推荐网址:http://www.github.com

搜索pulltorefresh

Android高级控件(二)_第14张图片 Android高级控件(二)_第15张图片

选择Most stars

Android高级控件(二)_第16张图片

download下载

Android高级控件(二)_第17张图片

引入一个Module
点击左上方的File——new——ImportModule

Android高级控件(二)_第18张图片

上图中的路径名为存放的路径

如下图:

Android高级控件(二)_第19张图片

导入之后会报错

没有android–16的SDK版本

Android高级控件(二)_第20张图片

打开pulltorefresh的build.gradle

发现sdk版本为16

Android高级控件(二)_第21张图片 Android高级控件(二)_第22张图片

再打开我们任意一个项目里面的build.gradle

发现sdk版本不一样(这里每个人的电脑可能都不一样)

Android高级控件(二)_第23张图片

复制自己的去覆盖pulltorefresh里面的comileSdkVersion和
buildToolsVersion

点击TryAgain

Android高级控件(二)_第24张图片

将项目和pulltorefresh建立关系

打开Open ModuleSettings

Android高级控件(二)_第25张图片

点击Dependences

Android高级控件(二)_第26张图片

点击+
点击Module dependency

选择pulltorefresh
点击ok

Android高级控件(二)_第27张图片

新建一个布局
activity_pull.xml

将这个布局文件当做普通的ListView用就好

Android高级控件(二)_第28张图片

写java代码

Android高级控件(二)_第29张图片

运行时会报一个错误
找不到符号

点击这个错误

Android高级控件(二)_第30张图片

将FloatMath改成Math(下面还有一个)
将float改成double

Android高级控件(二)_第31张图片 Android高级控件(二)_第32张图片

现在下拉效果已经有了
我们需要设置一个监听事件

选择......Listener2

Android高级控件(二)_第33张图片 Android高级控件(二)_第34张图片

上图上拉中有一个MyTask的类
我们需要自己写

Android高级控件(二)_第35张图片

下拉前效果图

Android高级控件(二)_第36张图片

下拉后效果图

Android高级控件(二)_第37张图片

你可能感兴趣的:(Android高级控件(二))