Android面试题——ListView(一)
来源:互联网 发布:自贡广电网络 编辑:程序博客网 时间:2024/06/06 07:37
Listview如何提高其效率
- 如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。
- 给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。
- 如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。
- 设置listview的监听器,如果listview是飞快滑动状态则不更新view
数据集改变后,如何更新ListView
使用该ListView的adapter的notifyDataSetChanged()方法。该方法会使ListView重新绘制。
如何实现分页加载
① 设置ListView的滚动监听器:setOnScrollListener(newOnScrollListener{….})
在监听器中有两个方法: 滚动状态发生变化的方法(onScrollStateChanged)和listView被滚动时调用的方法(onScroll)
② 在滚动状态发生改变的方法中,有三种状态:
手指按下移动的状态: SCROLL_STATE_TOUCH_SCROLL:// 触摸滑动
惯性滚动(滑翔(flgin)状态): SCROLL_STATE_FLING:// 滑翔
静止状态: SCROLL_STATE_IDLE:// 静止
对不同的状态进行处理:
分批加载数据,只关心静止状态:关心最后一个可见的条目,如果最后一个可见条目就是数据适配器(集合)里的最后一个,此时可加载更多的数据。在每次加载的时候,计算出滚动的数量,当滚动的数量大于等于总数量的时候,可以提示用户无更多数据了。
可以显示多种类型的条目吗
这个当然可以的,ListView显示的每个条目都是通过baseAdapter的getView(int position, ViewconvertView, ViewGroup parent)来展示的,理论上我们完全可以让每个条目都是不同类型的view,除此之外adapter还提供了getViewTypeCount()和getItemViewType(int position)两个方法。在getView方法中我们可以根据不同的viewtype加载不同的布局文件。
- Android面试题——ListView(一)
- Android面试题——ListView(二)
- Android面试题(一)
- android面试题(一)
- android面试题(一)
- android面试题(一)
- Android面试题(一)
- android面试题(一)
- Android面试题(一)
- Android 面试题(一)
- android 面试题一
- android面试题一
- Android面试题一
- Android面试题一
- android 面试题一
- Android 面试题一
- android 面试题一
- Android面试题(一)
- POJ - 1062 昂贵的聘礼(Dijkstra)
- Spring容器(四)
- leetcode——139——Word Break
- tableView注册cell的三种方式
- POJ - 1125 Stockbroker Grapevine(Floyd)
- Android面试题——ListView(一)
- Bootstrap 实现输入框中的 x 按钮删除文本值
- 例题9-1 UVA - 1025 A Spy in the Metro 城市里的间谍(DP)
- java中Iterator遍历时的删除问题
- MyBatis关联查询(一对一)
- MAC OS X10.10上Android开发环境搭建
- POJ - 2240 Arbitrage(Floyd)
- 32位和64位操作系统的区别
- JAVA中的自定义异常捕获