ListView实现分页且优化
来源:互联网 发布:java 类 编辑:程序博客网 时间:2024/05/29 11:00
1.创建一个类 有2个成员变量 来当做数据源
public class News { String title; String content;}
2.初始化listView数据 ,添加到集合中去
private Vector<News> vector;
private int index = 1;public void initData(){ for(int i=0;i<15;i++) { News n = new News(); n.title = "title"+index; n.content="content"+index; index++; vector.add(n); 把数据都添加到集合中 }}
3.自定义Adapter 优化ListView 减少View对象的创建和id的查找
@Overridepublic View getView(int position, View convertView, ViewGroup parent) { ViewHodler viewHodler; if (convertView == null) { //判断是否为null 减少加载xml文件的次数 convertView = getLayoutInflater().inflate(R.layout.list_5, null); 加载xml文件 viewHodler = new ViewHodler(); viewHodler.content = (TextView) convertView.findViewById(R.id.content_text); viewHodler.title = (TextView) convertView.findViewById(R.id.title_text); convertView.setTag(viewHodler); 把viewHolder当做标记 } else { viewHodler = (ViewHodler) convertView.getTag(); 取出标记 } News n = vector.get(position); 取出每一个坐标对应的 TextView的值 viewHodler.content.setText(n.content); 设置要显示的text viewHodler.title.setText(n.title); return convertView;}class ViewHodler { //创建一个类 用来初始化ListView所显示的所有的控件对象 减少多次查找 提高效率性能 TextView title; TextView content;}
4.监听滚动事件 判断是否是滑动到底部 并且是否是 显示最后一条数据
private int visibleLastIndex;//用来显示最后一条数据的索引@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE && myAdapter.getCount() == visibleLastIndex) { new LoadDataThread().start(); 开启线程(因为不能直接让主线程改变控件 通过Handle来完成) }}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { visibleLastIndex = firstVisibleItem + visibleItemCount - 1; (第一条+总共的-1)=最后一条的索引 (-1是因为 有一个footerView)}
5.借用Handle 来通知主线程 重新加载数据 达到下拉刷新数据 分页的效果
private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0x123: { 接收消息 myAdapter.notifyDataSetChanged(); 让适配器重新加载数据集 break; } } }};class LoadDataThread extends Thread { @Override public void run() { initData(); 创建一个子线程 用来重复提供数据源 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(0x123); 发送消息 }6.设置footerView 提示信息 (正在加载中 请稍后。。。)
View footerView = getLayoutInflater().inflate(R.layout.loading, null);list_5.addFooterView(footerView);
0 0
- ListView实现分页且优化
- ListView优化技巧 ,ListView分页
- listview优化,viewHolder ,分页
- ListView实现分页功能
- Listview 分页 实现
- Listview 分页 实现
- ListView实现分页功能
- ListView实现分页功能
- ListView实现简单分页
- ListView实现分页
- listView实现分页加载
- ListView实现分页功能
- ListView 优化及分页加载
- listview优化策略(分页)
- 怎么实现listview分页加载
- 如何实现ListView高效分页
- listView实现分页加载数据
- Android ListView 分页加载实现
- 数据结构与算法是程序的灵魂
- UIDynamic
- iOS wkwebview的基本使用与基于wkwebview的js、native 交互
- Unable to resolve target 'android-14'
- ios逆向教程使用的工具
- ListView实现分页且优化
- Volley
- Servlet开发整理
- js 创建<a>标签 并触发
- 一维小波降噪的综合应用实例
- 【hud2222】Keywords Search AC自动机
- 你正在为互联网上的“免费”付出什么?
- 使用librtmp进行H264与AAC直播
- React Native-13.React Native 常用API及实践 AppRegistry