项目有一个需求就是从服务器获取一个分页数据,数据按json数组的方式解析出来,每个对象有一个图片url,需要异步进行加载。
所以有两个大的功能点:
1.列表滑动到底时自动获取下一页的数据
2.每个item的图片文件通过异步的方式加载
网上参考了许多做自动分页功能的,都是采用onscrollListener,但是我试用了以后感觉效果并不好。所以决定换一个方法,也是我为了共享自己这点心得而写这篇博客的动力。
我的实现方式是在底部加一个footview,footview是个progressbar 带有一个正在加载的提示信息
大致说下我的文件结构
FootView顾名思义,就是我这里做滑动分页的功臣,具体做法也很简单,考虑的是一旦footview滑入屏幕会触发哪些函数,最后选择了onlayout,不同于scrolllistener,这里滑出再不会被误判了。敲定触发请求分页的事件了。
剩下的就是请求并更新数据了,我的做法是使用监听器模式,在Footview中设置一个请求分页的接口,activity中实现他,监听到请求分页的事件再做数据请求并通知adapter进行更新。
以上就是我做滑动分页的心得,代码在底部放出。
接下来就是异步加载图片数据了,其实类似的文章有很多,我没有仔细研究每一个案例,在我做异步加载的时候也碰到了一个问题。
我的实现方式是每一个item开启一个asynctask,这也是我问题的开始。我做过一个测试,加载不到30条数据,结果创建了接近130个asynctask 报错退出。我的代码如下
IconAsyncTask iconTask = new IconAsyncTask(holder.icon, alist.get(position));
iconTask.execute(new ApkFile[]{alist.get(position)});
肯定不能这样没节制的创建,一定需要一些约束条件。于是我想到了
if(alist.get(position).getIconResource() == null){
IconAsyncTask iconTask = new IconAsyncTask(holder.icon, alist.get(position));
iconTask.execute(new ApkFile[]{alist.get(position)});
}else{
holder.icon.setImageBitmap(alist.get(position).getIconResource());
}
这样,即使同一个item可能会刷多次(原因后面说),但对应list的数据如果判断不过,那么就不会重复创建asynctask了,问题解决。
刷新多次其实也是个很头疼的问题,感觉还必须这么做。
@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(result != null){
MyLog.d("getImage");
apkFile.setIconResource(result);
iconView.setImageBitmap(result);
notifyDataSetChanged();
}
}
如果大家有好的方法也请不吝赐教
- 大小: 26 KB
- 大小: 22.4 KB
分享到:
相关推荐
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
Android ListView 滑动分页 分页加载数据
listView分页加载内容 异步加载 避免一次加载错误
简洁 明确 listview异步加载图片
http://blog.csdn.net/icqapp/article/details/24978057 详看效果图...android listview左右滑动分页(viewpager嵌套listview进行分页),焦点图带圆焦点 先敬告学者:如在此项目上运行不了的直接找到本人QQ:508181017,
ListView的异步加载图片并缓存,可以实现异步加载数据,异步加载图片,缓存图片,并且实现退出删除图片缓存
ListView水平滑动分页,更改属性也可垂直滑动分页,但滑动事件有所冲突
android ListView滑动分页加载和点击分页加载,以及复用convertView综合案例
android Listview下拉刷新 上拉(滑动分页)加载更多 高仿新浪微博下拉刷新,同时实现了滑动加载下一页
图片异步加载,照片墙,异步加载listview中的图片 代码3 说明:http://blog.csdn.net/wjyyxzzjnws/article/details/10041125
ListView动态加载数据分页,使用Handler+线程和AsyncTask两种方法
android listview 异步加载网络图片
ListView 动态加载,滑动加载,源代码案例
android listView图片异步加载(拖动时不加载,双缓存)
Android Listview异步加载图片,图片错位解决方案
Android 异步加载图片,对ListView的异步加载图片的功能演示,主要根据url读取图片返回流的方法。为了方便演示,将请求图片的链接先固定,每读取好一个图片就更新,界面比较简单,当然你可以做成比较好的,像很多好...
listview item 异步加载数据图片
Android实现ListView异步加载图片