使用Volley框架异步加载图片+ListView图片加载错位解决
2016-07-11 17:55
417 查看
BitmapCache类:
view
sourceprint?
MyAdapter:
view
sourceprint?
MainActivity:
view
sourceprint?
view
sourceprint?
01.
package
com.dystudio.ustc.asyncimageloader_listview_volley;
02.
03.
import
android.graphics.Bitmap;
04.
import
android.support.v4.util.LruCache;
05.
import
android.util.Log;
06.
07.
import
com.android.volley.toolbox.ImageLoader.ImageCache;
08.
09.
10.
public
class
BitmapCache
implements
ImageCache {
11.
12.
private
static
final
String TAG =
"BitmapCache"
;
13.
private
LruCache<String, Bitmap> mCache;
14.
15.
public
BitmapCache() {
16.
17.
int
maxSize =
4
*
1024
*
1024
;
18.
19.
mCache =
new
LruCache<String, Bitmap>(maxSize) {
20.
@Override
21.
protected
int
sizeOf(String key, Bitmap bitmap) {
22.
23.
return
bitmap.getRowBytes()
*bitmap.getHeight();
24.
}
25.
26.
};
27.
28.
}
29.
30.
@Override
31.
public
Bitmap getBitmap(String url) {
32.
33.
Log.i(TAG,
"get cache "
+ url);
34.
35.
return
mCache.get(url);
36.
}
37.
38.
@Override
39.
public
void
putBitmap(String url, Bitmap bitmap) {
40.
Log.i(TAG,
"get cache: "
+ url);
41.
if
(bitmap !=
null
) {
42.
43.
mCache.put(url, bitmap);
44.
45.
}
46.
47.
}
48.
49.
}
MyAdapter:
view
sourceprint?
01.
package
com.dystudio.ustc.asyncimageloader_listview_volley;
02.
03.
import
android.content.Context;
04.
import
android.view.LayoutInflater;
05.
import
android.view.View;
06.
import
android.view.ViewGroup;
07.
import
android.widget.BaseAdapter;
08.
09.
import
com.android.volley.RequestQueue;
10.
import
com.android.volley.toolbox.ImageLoader;
11.
import
com.android.volley.toolbox.NetworkImageView;
12.
import
com.android.volley.toolbox.Volley;
13.
14.
15.
16.
public
class
MyAdapter
extends
BaseAdapter {
17.
18.
private
String[] list;
19.
20.
private
Context context;
21.
22.
private
RequestQueue queue;
23.
24.
private
ImageLoader imageLoader;
25.
26.
public
MyAdapter(Context context, String[] list) {
27.
28.
this
.context = context;
29.
30.
this
.list = list;
31.
32.
queue = Volley.newRequestQueue(context);
33.
34.
imageLoader =
new
ImageLoader(queue,
new
BitmapCache());
35.
}
36.
37.
@Override
38.
public
int
getCount() {
39.
return
list.length;
40.
}
41.
42.
@Override
43.
public
Object getItem(
int
position) {
44.
return
list[position];
45.
}
46.
47.
@Override
48.
public
long
getItemId(
int
position) {
49.
return
position;
50.
}
51.
52.
@Override
53.
public
View getView(
int
position, View convertView, ViewGroup parent) {
54.
55.
ViewHolder holder =
null
;
56.
57.
if
(convertView ==
null
) {
58.
59.
holder =
new
ViewHolder();
60.
61.
convertView = LayoutInflater.from(context).inflate(
62.
R.layout.list_item,
null
);
63.
holder.img = (NetworkImageView) convertView
64.
.findViewById(R.id.userimage);
65.
66.
convertView.setTag(holder);
67.
68.
}
else
{
69.
70.
holder =(ViewHolder) convertView.getTag();
71.
72.
}
73.
String imgUrl = list[position];
74.
75.
if
(imgUrl !=
null
&& !imgUrl.equals(
""
)) {
76.
77.
holder.img.setDefaultImageResId(R.drawable.ic_launcher);
78.
holder.img.setErrorImageResId(R.drawable.ic_launcher);
79.
holder.img.setImageUrl(imgUrl, imageLoader);
80.
81.
}
82.
83.
return
convertView;
84.
}
85.
86.
static
class
ViewHolder {
87.
NetworkImageView img;
88.
}
89.
90.
}
MainActivity:
view
sourceprint?
001.
package
com.dystudio.ustc.asyncimageloader_listview_volley;
002.
003.
import
android.app.Activity;
004.
import
android.os.Bundle;
005.
import
android.widget.ListView;
006.
007.
public
class
MainActivity
extends
Activity {
008.
ListView listView;
009.
String[] images =
new
String[] {
010.
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"
,
011.
"http://img.my.csdn.net/uploads/201407/26/1406383291_6518.jpg"
,
012.
"http://img.my.csdn.net/uploads/201407/26/1406383291_8239.jpg"
,
013.
"http://img.my.csdn.net/uploads/201407/26/1406383290_9329.jpg"
,
014.
"http://img.my.csdn.net/uploads/201407/26/1406383290_1042.jpg"
,
015.
"http://img.my.csdn.net/uploads/201407/26/1406383275_3977.jpg"
,
016.
"http://img.my.csdn.net/uploads/201407/26/1406383265_8550.jpg"
,
017.
"http://img.my.csdn.net/uploads/201407/26/1406383264_3954.jpg"
,
018.
"http://img.my.csdn.net/uploads/201407/26/1406383264_4787.jpg"
,
019.
"http://img.my.csdn.net/uploads/201407/26/1406383264_8243.jpg"
,
020.
"http://img.my.csdn.net/uploads/201407/26/1406383248_3693.jpg"
,
021.
"http://img.my.csdn.net/uploads/201407/26/1406383243_5120.jpg"
,
022.
"http://img.my.csdn.net/uploads/201407/26/1406383242_3127.jpg"
,
023.
"http://img.my.csdn.net/uploads/201407/26/1406383242_9576.jpg"
,
024.
"http://img.my.csdn.net/uploads/201407/26/1406383242_1721.jpg"
,
025.
"http://img.my.csdn.net/uploads/201407/26/1406383219_5806.jpg"
,
026.
"http://img.my.csdn.net/uploads/201407/26/1406383214_7794.jpg"
,
027.
"http://img.my.csdn.net/uploads/201407/26/1406383213_4418.jpg"
,
028.
"http://img.my.csdn.net/uploads/201407/26/1406383213_3557.jpg"
,
029.
"http://img.my.csdn.net/uploads/201407/26/1406383210_8779.jpg"
,
030.
"http://img.my.csdn.net/uploads/201407/26/1406383172_4577.jpg"
,
031.
"http://img.my.csdn.net/uploads/201407/26/1406383166_3407.jpg"
,
032.
"http://img.my.csdn.net/uploads/201407/26/1406383166_2224.jpg"
,
033.
"http://img.my.csdn.net/uploads/201407/26/1406383166_7301.jpg"
,
034.
"http://img.my.csdn.net/uploads/201407/26/1406383165_7197.jpg"
,
035.
"http://img.my.csdn.net/uploads/201407/26/1406383150_8410.jpg"
,
036.
"http://img.my.csdn.net/uploads/201407/26/1406383131_3736.jpg"
,
037.
"http://img.my.csdn.net/uploads/201407/26/1406383130_5094.jpg"
,
038.
"http://img.my.csdn.net/uploads/201407/26/1406383130_7393.jpg"
,
039.
"http://img.my.csdn.net/uploads/201407/26/1406383129_8813.jpg"
,
040.
"http://img.my.csdn.net/uploads/201407/26/1406383100_3554.jpg"
,
041.
"http://img.my.csdn.net/uploads/201407/26/1406383093_7894.jpg"
,
042.
"http://img.my.csdn.net/uploads/201407/26/1406383092_2432.jpg"
,
043.
"http://img.my.csdn.net/uploads/201407/26/1406383092_3071.jpg"
,
044.
"http://img.my.csdn.net/uploads/201407/26/1406383091_3119.jpg"
,
045.
"http://img.my.csdn.net/uploads/201407/26/1406383059_6589.jpg"
,
046.
"http://img.my.csdn.net/uploads/201407/26/1406383059_8814.jpg"
,
047.
"http://img.my.csdn.net/uploads/201407/26/1406383059_2237.jpg"
,
048.
"http://img.my.csdn.net/uploads/201407/26/1406383058_4330.jpg"
,
049.
"http://img.my.csdn.net/uploads/201407/26/1406383038_3602.jpg"
,
050.
"http://img.my.csdn.net/uploads/201407/26/1406382942_3079.jpg"
,
051.
"http://img.my.csdn.net/uploads/201407/26/1406382942_8125.jpg"
,
052.
"http://img.my.csdn.net/uploads/201407/26/1406382942_4881.jpg"
,
053.
"http://img.my.csdn.net/uploads/201407/26/1406382941_4559.jpg"
,
054.
"http://img.my.csdn.net/uploads/201407/26/1406382941_3845.jpg"
,
055.
"http://img.my.csdn.net/uploads/201407/26/1406382924_8955.jpg"
,
056.
"http://img.my.csdn.net/uploads/201407/26/1406382923_2141.jpg"
,
057.
"http://img.my.csdn.net/uploads/201407/26/1406382923_8437.jpg"
,
058.
"http://img.my.csdn.net/uploads/201407/26/1406382922_6166.jpg"
,
059.
"http://img.my.csdn.net/uploads/201407/26/1406382922_4843.jpg"
,
060.
"http://img.my.csdn.net/uploads/201407/26/1406382905_5804.jpg"
,
061.
"http://img.my.csdn.net/uploads/201407/26/1406382904_3362.jpg"
,
062.
"http://img.my.csdn.net/uploads/201407/26/1406382904_2312.jpg"
,
063.
"http://img.my.csdn.net/uploads/201407/26/1406382904_4960.jpg"
,
064.
"http://img.my.csdn.net/uploads/201407/26/1406382900_2418.jpg"
,
065.
"http://img.my.csdn.net/uploads/201407/26/1406382881_4490.jpg"
,
066.
"http://img.my.csdn.net/uploads/201407/26/1406382881_5935.jpg"
,
067.
"http://img.my.csdn.net/uploads/201407/26/1406382880_3865.jpg"
,
068.
"http://img.my.csdn.net/uploads/201407/26/1406382880_4662.jpg"
,
069.
"http://img.my.csdn.net/uploads/201407/26/1406382879_2553.jpg"
,
070.
"http://img.my.csdn.net/uploads/201407/26/1406382862_5375.jpg"
,
071.
"http://img.my.csdn.net/uploads/201407/26/1406382862_1748.jpg"
,
072.
"http://img.my.csdn.net/uploads/201407/26/1406382861_7618.jpg"
,
073.
"http://img.my.csdn.net/uploads/201407/26/1406382861_8606.jpg"
,
074.
"http://img.my.csdn.net/uploads/201407/26/1406382861_8949.jpg"
,
075.
"http://img.my.csdn.net/uploads/201407/26/1406382841_9821.jpg"
,
076.
"http://img.my.csdn.net/uploads/201407/26/1406382840_6603.jpg"
,
077.
"http://img.my.csdn.net/uploads/201407/26/1406382840_2405.jpg"
,
078.
"http://img.my.csdn.net/uploads/201407/26/1406382840_6354.jpg"
,
079.
"http://img.my.csdn.net/uploads/201407/26/1406382839_5779.jpg"
,
080.
"http://img.my.csdn.net/uploads/201407/26/1406382810_7578.jpg"
,
081.
"http://img.my.csdn.net/uploads/201407/26/1406382810_2436.jpg"
,
082.
"http://img.my.csdn.net/uploads/201407/26/1406382809_3883.jpg"
,
083.
"http://img.my.csdn.net/uploads/201407/26/1406382809_6269.jpg"
,
084.
"http://img.my.csdn.net/uploads/201407/26/1406382808_4179.jpg"
,
085.
"http://img.my.csdn.net/uploads/201407/26/1406382790_8326.jpg"
,
086.
"http://img.my.csdn.net/uploads/201407/26/1406382789_7174.jpg"
,
087.
"http://img.my.csdn.net/uploads/201407/26/1406382789_5170.jpg"
,
088.
"http://img.my.csdn.net/uploads/201407/26/1406382789_4118.jpg"
,
089.
"http://img.my.csdn.net/uploads/201407/26/1406382788_9532.jpg"
,
090.
"http://img.my.csdn.net/uploads/201407/26/1406382767_3184.jpg"
,
091.
"http://img.my.csdn.net/uploads/201407/26/1406382767_4772.jpg"
,
092.
"http://img.my.csdn.net/uploads/201407/26/1406382766_4924.jpg"
,
093.
"http://img.my.csdn.net/uploads/201407/26/1406382766_5762.jpg"
,
094.
"http://img.my.csdn.net/uploads/201407/26/1406382765_7341.jpg"
};
095.
096.
@Override
097.
protected
void
onCreate(Bundle savedInstanceState) {
098.
super
.onCreate(savedInstanceState);
099.
setContentView(R.layout.activity_main);
100.
listView = (ListView) findViewById(R.id.listview);
101.
MyAdapter adapter =
new
MyAdapter(
this
, images);
102.
listView.setAdapter(adapter);
103.
}
104.
}
相关文章推荐
- SpringMVC设置一个自定义拦截器
- excel的导入导出
- REST架构风格简介
- RCNN学习笔记(7):Faster R-CNN 英文论文翻译笔记
- NSNotification系统通知优化
- NSNotification系统通知优化
- Hadoop概念学习系列之hadoop细节知识题小整理(二十四)
- [Effective JavaScript 笔记]第60条:支持方法链
- Strider安装(Ubuntu)
- 系统上线流程规范
- 机器学习关键问题阐述
- Nginx源码分析 - 主流程篇 - 全局变量cycle初始化
- SpringMVC详细运行流程图
- RCNN学习笔记(6):You Only Look Once(YOLO):Unified, Real-Time Object Detection
- php保存execl
- Android判断用户的网络类型(2/3/4G、wifi)
- LeetCode 242. Valid Anagram
- java设计模式学习资料汇总
- 页面 html5鼠标滚动全屏图片倾斜分割切换特效
- c++ 全局变量、局部变量、静态全局变量、静态局部变量的区别