listview滑动时不加载图片,并且加载只加载当前屏幕上的图片

zljk000 2012-09-08 10:32:43
请问有无人做过关于listview滑动时不加载图片,一加载就只加载当前屏幕的item的图,其他没加载的都用默认图片填充。
呃,不知道我说得够不够明白呢,就好像新浪微博之类的客户端,几乎所有高效率的listview上下滑动都是这个效果,请教一下
...全文
601 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy_nanchang 2012-11-06
  • 打赏
  • 举报
回复
引用 6 楼 cheligeer 的回复:
1、判断listView状态 AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {// ListView // 触摸事件 public void onScroll(AbsListView view, int firstVisibleItem, i……
那怎么在adapter的getView里面怎么使用呢?或者说拿到了这些数据在哪里使用呢?
cheligeer 2012-09-10
  • 打赏
  • 举报
回复
1、判断listView状态
AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {// ListView
// 触摸事件

public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}

public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_FLING:// 滑动状态
threadFlag = false;
break;
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:// 停止
threadFlag = true;
startThread();
break;
case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 触摸listView
threadFlag = false;
break;
default:
// Toast.makeText(contextt, "default",
// Toast.LENGTH_SHORT).show();
break;
}
}
};
2、获取当前屏幕上显示的items:
mListView.getFirstVisiblePosition();
mListView.getLastVisiblePosition();
CodeCxz 2012-09-10
  • 打赏
  • 举报
回复
没有把图片定义出来吧
  • 打赏
  • 举报
回复
也可以下下来在本地存一下,下载之前判断已经有了就不用再下载了。
傲慢的上校 2012-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

listview已经做了内部优化,采用双缓存技术让当前可见窗口内容加载,不再当前窗口暂时不加载(缓存),新浪微博使用的就是listview控件(android)
[/Quote]哦 学习一下。。。。。
飞翔的牧人 2012-09-08
  • 打赏
  • 举报
回复
没你说的那么复杂,开一个线程异步下载图片,下载完成后设置图片即可。给你大概的写了一下。
//主activity
private class MainActivity extend Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

//下载图片的方法
new ImageDownloader.imageDownload("...",new ImageDownloader.ImageDowloaderCallback(){
onDownloadSuccess(){
//通知主线程更新view即可。
};
})

}

//图片下载类
public class ImageDownloader{
void imageDownload(url,ImageDowloaderCallback){
new ImageDownTask().execute();
}

private class ImageDownTask extends AsyncTask<String, Void, Bitmap>{
@Override
protected Bitmap doInBackground(String... params) {
//...
return null;
}

@Override
protected void onPostExecute(Bitmap result) {
//通知activity下载图片完成,方法回调
super.onPostExecute(result);
}
}

public static interface ImageDowloaderCallback{
onDownloadSuccess();
}
}
阳光岛主 2012-09-08
  • 打赏
  • 举报
回复
listview已经做了内部优化,采用双缓存技术让当前可见窗口内容加载,不再当前窗口暂时不加载(缓存),新浪微博使用的就是listview控件(android)

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧