欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2018-09-16 高级控件ListView

程序员文章站 2022-07-14 18:05:05
...
  1. BaseAdapter:是所有适配器类的父类,可以对列表项进行最大限度的定制
    1.1 自定义适配器中的方法
    *getCount 返回当前ListView或者Spinner等控件要显示多少条数据
    *getView 返回的是ListView或者Spinner每一个选项的布局,这个方法的作用是把每一行的试图文件(layout布局文件) 解析成一个View对象
    getItem 返回哪一行的对象
    getItemId 获取那一行的对象ID

    1.2 LayoutInflater(布局解析器)
    用来把layout布局文件解析成一个View对象,不可以new,需要使用系统服务获得
    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

  2. ListView优化
    2.1 使用ConvertView重用组件
    即拖动时被遮住、看不见的控件,重用它,而非每次创建一个新的对象

    2.2 使用内部类ViewHolder+ConvertView.setTag()保存控件,而不用每次查找
    ViewHolder(视图的持有者):专门存放控件,减少浪费资源

  3. 第三方控件:上拉加载、下拉刷新控件
    3.1 导入第三方插件库
    Android-PullToRefresh-master.zip

3.2 在布局文件中使用第三方插件
com.handmark.pulltorefresh.library.PullToRefreshListView

3.3 自定义适配器(BaseAdapter)提供数据

3.4 异步任务查询数据(AsyncTask)
3.4.1 AsyncTask定义了三种泛型类型 Params,Progress和Result。
Params 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String
3.4.2 异步加载数据最少要重写以下这两个方法
doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里
onPostExecute(Result) 相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI
–注:此方法中再通知适配器和控件
myBaseAdapter.notifyDataSetChanged();// 通知适配器数据已改变
plv_main_plv1.onRefreshComplete();// 通知控件数据已经加载完毕

3.5 给PullToRefreshListView设置相关属性
plv_main_1.setMode(Mode.BOTH);// 设置刷新模式
Mode.BOTH:同时支持上拉下拉
Mode.PULL_FROM_START:只支持下拉Pulling Down
Mode.PULL_FROM_END:只支持上拉Pulling Up

  1. 导入PullToRefresh

1.1 修改library的build.gradle中的sdk版本
//修改前
compileSdkVersion 16
buildToolsVersion “27.0.3”

  defaultConfig {
    minSdkVersion 4
    targetSdkVersion 4
  }
 
  //修改后
  compileSdkVersion 27
  buildToolsVersion "27.0.3"

  defaultConfig {
    minSdkVersion 15
    targetSdkVersion 27
  }

1.2 Clear Project后会报如下错误,修改源代码:“PullToRefreshWebView”
错误: 找不到符号
符号: 方法 floor(float)
位置: 类 FloatMath

  FloatMath.floor -> Math.floor

1.3 选中自己的工程,例如:“app”然后鼠标右键“open Moduel settings”导入库

  	核心:
1、listview控件、项资源、自定义适配器准备好
2、向服务端拿数据
3、初始化自定适配器(获取视图解析器、得到项资源的view控件、获取所有的子控件,给子控件赋值、返回view)
4、绑定适配器