用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片

Android 码拜 9年前 (2015-04-26) 814次浏览 0个评论
 

只有当滑动结束时,才会加载,而且是只加载当前屏幕内的图片

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
在Adapter里面控制getCount(),让它返回多少,它就显示多少。
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
100分
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//firstVisibleItem为当前可见的第一条item的position
                //visibleItemCount为当前可见的条数

你可以根据这两个数值来操控adapter的notifycation
}
}

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 1 楼 hhbgk 的回复:

在Adapter里面控制getCount(),让它返回多少,它就显示多少。

能不能说具体点,我是截取数组的一段然后秒退了

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 2 楼 pengguohua1988 的回复:

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//firstVisibleItem为当前可见的第一条item的position
                //visibleItemCount为当前可见的条数

你可以根据这两个数值来操控adapter的notifycation
}
}

imageLoader.displayImage(imageUrls[position], imageView,options);
这样怎么操控更新?????

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
来人啊
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
imageLoader.displayImage(imageUrls[position], imageView,options);这个不是在adapter中执行么?你adapter更新的时候position在firstVisibleItem到firstVisibleItem+visibleItemCount之间才执行应该就行了吧
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 6 楼 pengguohua1988 的回复:

imageLoader.displayImage(imageUrls[position], imageView,options);这个不是在adapter中执行么?你adapter更新的时候position在firstVisibleItem到firstVisibleItem+visibleItemCount之间才执行应该就行了吧

这个是在中adapter中的getview中的,我也知道position在firstVisibleItem到firstVisibleItem+visibleItemCount之间,但代码怎么实现啊。我是小白,我用自己的想法试了好多次了,这个问题已经纠结了我几星期了

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 8 楼 pengguohua1988 的回复:

你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();

不行啊,不是只加载当前屏幕内的啊,拉到底,还是从上向加下加载,不会加载当前屏幕内

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
你可以加listener,当停止滑动时,再加载图片.
在滑动过程中,你要mark你当前的position在哪,然后再根据visibleItem调用imageLoader.displayImage((position-i),imageview).
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 10 楼 dalor 的回复:

你可以加listener,当停止滑动时,再加载图片.
在滑动过程中,你要mark你当前的position在哪,然后再根据visibleItem调用imageLoader.displayImage((position-i),imageview).

设置标签吗,具体代码怎么实现,可以说看看吗

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 11 楼 u013174956 的回复:
Quote: 引用 10 楼 dalor 的回复:

你可以加listener,当停止滑动时,再加载图片.
在滑动过程中,你要mark你当前的position在哪,然后再根据visibleItem调用imageLoader.displayImage((position-i),imageview).

设置标签吗,具体代码怎么实现,可以说看看吗

listview实现OnScrollListener,在 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 方法中保存visibleItemCount[因为滑动结束后,这个方法不调用,所以,不在此方法中判断加载图片],滑动结束时,当前position在adapter的getview方法中去保存.这两个数据都有了加载当前屏幕的就可以实现的了.

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 12 楼 dalor 的回复:
Quote: 引用 11 楼 u013174956 的回复:
Quote: 引用 10 楼 dalor 的回复:

你可以加listener,当停止滑动时,再加载图片.
在滑动过程中,你要mark你当前的position在哪,然后再根据visibleItem调用imageLoader.displayImage((position-i),imageview).

设置标签吗,具体代码怎么实现,可以说看看吗

listview实现OnScrollListener,在 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 方法中保存visibleItemCount[因为滑动结束后,这个方法不调用,所以,不在此方法中判断加载图片],滑动结束时,当前position在adapter的getview方法中去保存.这两个数据都有了加载当前屏幕的就可以实现的了.

本人小白一个,不明白
可否帮忙写下

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
来人啊,喂,来人
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 9 楼 u013174956 的回复:
Quote: 引用 8 楼 pengguohua1988 的回复:

你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();

不行啊,不是只加载当前屏幕内的啊,拉到底,还是从上向加下加载,不会加载当前屏幕内

那就是你的条件取的不对啊。你滑动停止的状态获得的对么?还有你停止的时候你的firstVisibleItem和visibleItemCount对么?你还是打印出来看看吧,逻辑上没问题,你的状态值设置的肯定不对

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
这样对吗
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 15 楼 pengguohua1988 的回复:
Quote: 引用 9 楼 u013174956 的回复:
Quote: 引用 8 楼 pengguohua1988 的回复:

你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();

不行啊,不是只加载当前屏幕内的啊,拉到底,还是从上向加下加载,不会加载当前屏幕内

那就是你的条件取的不对啊。你滑动停止的状态获得的对么?还有你停止的时候你的firstVisibleItem和visibleItemCount对么?你还是打印出来看看吧,逻辑上没问题,你的状态值设置的肯定不对

这样对吗??,图在楼上了。。

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
我去你的条件为啥直接是true啊,你的isBusy干啥用的啊
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 18 楼 u013174956 的回复:
Quote: 引用 15 楼 pengguohua1988 的回复:
Quote: 引用 9 楼 u013174956 的回复:
Quote: 引用 8 楼 pengguohua1988 的回复:

你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();

不行啊,不是只加载当前屏幕内的啊,拉到底,还是从上向加下加载,不会加载当前屏幕内

那就是你的条件取的不对啊。你滑动停止的状态获得的对么?还有你停止的时候你的firstVisibleItem和visibleItemCount对么?你还是打印出来看看吧,逻辑上没问题,你的状态值设置的肯定不对

这样对吗??,图在楼上了。。

我去你的条件为啥直接是true啊,你的isBusy干啥用的啊 

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 20 楼 pengguohua1988 的回复:
Quote: 引用 18 楼 u013174956 的回复:
Quote: 引用 15 楼 pengguohua1988 的回复:
Quote: 引用 9 楼 u013174956 的回复:
Quote: 引用 8 楼 pengguohua1988 的回复:

你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();

不行啊,不是只加载当前屏幕内的啊,拉到底,还是从上向加下加载,不会加载当前屏幕内

那就是你的条件取的不对啊。你滑动停止的状态获得的对么?还有你停止的时候你的firstVisibleItem和visibleItemCount对么?你还是打印出来看看吧,逻辑上没问题,你的状态值设置的肯定不对

这样对吗??,图在楼上了。。

我去你的条件为啥直接是true啊,你的isBusy干啥用的啊 

也不是加载当前屏幕内的,还是从上向下加载,不信我发源码给你看。。。。

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把adapter的更新和isBusy=false放一起。

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 21 楼 u013174956 的回复:
Quote: 引用 20 楼 pengguohua1988 的回复:
Quote: 引用 18 楼 u013174956 的回复:
Quote: 引用 15 楼 pengguohua1988 的回复:
Quote: 引用 9 楼 u013174956 的回复:
Quote: 引用 8 楼 pengguohua1988 的回复:

你在imageLoader.displayImage(imageUrls[position], imageView,options)的外层加一个逻辑,
if(position>=firstVisibleItem&&position<=firstVisibleItem+visibleItemCount&&滑动结束){
imageLoader.displayImage(imageUrls[position], imageView,options);
}
滑动结束执行
adapter.notifyDataSetChanged();

不行啊,不是只加载当前屏幕内的啊,拉到底,还是从上向加下加载,不会加载当前屏幕内

那就是你的条件取的不对啊。你滑动停止的状态获得的对么?还有你停止的时候你的firstVisibleItem和visibleItemCount对么?你还是打印出来看看吧,逻辑上没问题,你的状态值设置的肯定不对

这样对吗??,图在楼上了。。

我去你的条件为啥直接是true啊,你的isBusy干啥用的啊 

也不是加载当前屏幕内的,还是从上向下加载,不信我发源码给你看。。。。

只有当滑动结束时,才会加载,而且是只加载当前屏幕内的图片 

我想知道你到底想要啥效果

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 22 楼 pengguohua1988 的回复:
Quote: 引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把adapter的更新和isBusy=false放一起。

getview中不用adapter.notifyDataSetChanged()吗??我试试

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 24 楼 u013174956 的回复:
Quote: 引用 22 楼 pengguohua1988 的回复:
Quote: 引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把adapter的更新和isBusy=false放一起。

getview中不用adapter.notifyDataSetChanged()吗??我试试

把adapter.notifyDataSetChanged()放在isBusy不行哦,只显示当前屏幕的图片,然后下拉就连默认图片都 没了

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 25 楼 u013174956 的回复:
Quote: 引用 24 楼 u013174956 的回复:
Quote: 引用 22 楼 pengguohua1988 的回复:
Quote: 引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把adapter的更新和isBusy=false放一起。

getview中不用adapter.notifyDataSetChanged()吗??我试试

把adapter.notifyDataSetChanged()放在isBusy不行哦,只显示当前屏幕的图片,然后下拉就连默认图片都 没了

你再具体说一下你想要啥效果,我明天给你回复

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 26 楼 pengguohua1988 的回复:
Quote: 引用 25 楼 u013174956 的回复:
Quote: 引用 24 楼 u013174956 的回复:
Quote: 引用 22 楼 pengguohua1988 的回复:
Quote: 引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把起adapter的更新和isBusy=false放一。

getview中不用adapter.notifyDataSetChanged()吗??我试试

把adapter.notifyDataSetChanged()放在isBusy不行哦,只显示当前屏幕的图片,然后下拉就连默认图片都 没了

你再具体说一下你想要啥效果,我明天给你回复

就是只有当滑动结束时,才会加载,而且是只加载当前屏幕内的图片 的效果
把adapter的更新和isBusy=false放一起,第一次只显示当前屏幕内的图片,然后下拉后,后面的图片就显示不出来了,而且连背景的默认图片也显示不出来

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
来人呐。。。。。。。。。。。。
用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 27 楼 u013174956 的回复:
Quote: 引用 26 楼 pengguohua1988 的回复:
Quote: 引用 25 楼 u013174956 的回复:
Quote: 引用 24 楼 u013174956 的回复:
Quote: 引用 22 楼 pengguohua1988 的回复:
Quote: 引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把起adapter的更新和isBusy=false放一。

getview中不用adapter.notifyDataSetChanged()吗??我试试

把adapter.notifyDataSetChanged()放在isBusy不行哦,只显示当前屏幕的图片,然后下拉就连默认图片都 没了

你再具体说一下你想要啥效果,我明天给你回复

就是只有当滑动结束时,才会加载,而且是只加载当前屏幕内的图片 的效果
把adapter的更新和isBusy=false放一起,第一次只显示当前屏幕内的图片,然后下拉后,后面的图片就显示不出来了,而且连背景的默认图片也显示不出来

下拉刷新?下拉你把变量值初始化没?

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 29 楼 pengguohua1988 的回复:
Quote: 引用 27 楼 u013174956 的回复:
Quote: 引用 26 楼 pengguohua1988 的回复:
Quote: 引用 25 楼 u013174956 的回复:
Quote: 引用 24 楼 u013174956 的回复:
Quote: 引用 22 楼 pengguohua1988 的回复:
Quote: 引用 17 楼 u013174956 的回复:

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片]
这样。。,默认isBusy是等于true的

你应该把起adapter的更新和isBusy=false放一。

getview中不用adapter.notifyDataSetChanged()吗??我试试

把adapter.notifyDataSetChanged()放在isBusy不行哦,只显示当前屏幕的图片,然后下拉就连默认图片都 没了

你再具体说一下你想要啥效果,我明天给你回复

就是只有当滑动结束时,才会加载,而且是只加载当前屏幕内的图片 的效果
把adapter的更新和isBusy=false放一起,第一次只显示当前屏幕内的图片,然后下拉后,后面的图片就显示不出来了,而且连背景的默认图片也显示不出来

下拉刷新?下拉你把变量值初始化没?

isBusy初始化??, 在那初始化?,可不可以给你我QQ,我的QQ384214402

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
看在100分,回复如下:

imageloader 适合异步加载,虽然我没看过它的源码。

楼主要求实现的东东,就算不用 imageloader 也可以自己实现。

我的方案:
起一个线程A(别把这个想的太复杂) 专门处理解码图片。
listview, adapter之类,按照正常逻辑,get view 要复用View。

需要特殊处理的地方:getView时 给ImageView 预先设置一个等待加载的图,然后把请求提交到A,由A处理完再 发消息通知ListView中对应的子View 刷新图片。

基本思路就是这样,代码就不上了。

可以先试用下 sample apk 在此

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
引用 31 楼 gqjjqg 的回复:

看在100分,回复如下:

imageloader 适合异步加载,虽然我没看过它的源码。

楼主要求实现的东东,就算不用 imageloader 也可以自己实现。

我的方案:
起一个线程A(别把这个想的太复杂) 专门处理解码图片。
listview, adapter之类,按照正常逻辑,get view 要复用View。

需要特殊处理的地方:getView时 给ImageView 预先设置一个等待加载的图,然后把请求提交到A,由A处理完再 发消息通知ListView中对应的子View 刷新图片。

基本思路就是这样,代码就不上了。

可以先试用下 sample apk 在此

不太明白,小白一个

用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
学习了,值得一看!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用imageloader异步加载图片的问题,怎么实现只加载当前屏幕内的图片
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!