Gridview 惰性网格视图在android中滚动时得到刷新 当我运行这段代码时,图像被一个一个地隐藏起来。当我滚动页面时,图像位置会发生变化,请帮助我解决此问题
url数组被传递给图像网格构造函数。 通过使用异步任务,url被处理并返回位图 image_grid.java 使用这个类 公共类图像加载器{ MemoryCache MemoryCache=新的MemoryCache; 文件缓存文件缓存; private Map ImageView=Collections.synchronizedMapnew WeakHashMap; 执行服务执行服务; 公共ImageLoaderContext上下文{ fileCache=新的FileCachecontext; executorService=Executors.newFixedThreadPool5; } 最终int存根_id=R.可拉伸.加载; public void DisplayImageString url,ImageView ImageView { imageViews.putimageView,url; 位图位图=memoryCache.geturl; ifbitmap!=null imageView.setImageBitmapbitmap; 其他的 { 队列照片URL,图像视图; imageView.setImageResourcestub_id; } } 私有无效队列PhotoString url,ImageView ImageView { PhotoToLoad p=新的PhotoToLoadurl,imageView; executorService.submitnew PhotoloadERP; } 私有位图getBitmapString url { 文件f=fileCache.getFileurl; //从SD缓存 位图b=解码文件F; ifb!=null 返回b; //从网络 试一试{ 位图=空; URL imageUrl=新的URL; HttpURLConnection conn=HttpURLConnectionimageUrl.openConnection; conn.setConnectTimeout30000; conn.setReadTimeout30000; conn.setInstanceFollowRedirectstrue; InputStream为=conn.getInputStream; OutputStream os=新文件OutputStreamF; Utils.copyreamis,os; 操作系统关闭; 位图=解码文件; 返回位图; }捕获异常{ 例如,打印跟踪; 返回null; } } //对图像进行解码和缩放以减少内存消耗 私有位图解码文件f{ 试一试{ //解码图像大小 选项o=新的位图工厂选项; o、 inJustDecodeBounds=true; BitmapFactory.decodeStreamnew-FileInputStreamf,null,o; //找到正确的刻度值。它应该是2的幂。 所需的最终int_尺寸=70; 内部宽度=o.向外宽度,高度=o.向外高度; int标度=1; whiletrue{ IFU tmp/2宽度Gridview 惰性网格视图在android中滚动时得到刷新 当我运行这段代码时,图像被一个一个地隐藏起来。当我滚动页面时,图像位置会发生变化,请帮助我解决此问题,gridview,lazy-loading,android-gridview,Gridview,Lazy Loading,Android Gridview,url数组被传递给图像网格构造函数。 通过使用异步任务,url被处理并返回位图 image_grid.java 使用这个类 公共类图像加载器{ MemoryCache MemoryCache=新的MemoryCache; 文件缓存文件缓存; private Map ImageView=Collections.synchronizedMapnew WeakHashMap; 执行服务执行服务; 公共ImageLoaderContext上下文{ fileCache=新的FileCachecontex
public class image_grid extends BaseAdapter {
private Context mContext;
LayoutInflater inflater = null;
private final String[] url;
public image_grid(Context applicationContext, String[] url) {
mContext = applicationContext;
inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.url = url;
}
@Override
public int getCount() {
return url.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View grid;
if (convertView == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.assignment_image_grid, parent,
false);
} else {
grid = (View) convertView;
}
ImageView image = (ImageView) grid.findViewById(R.id.imageView1);
TextView text = (TextView) grid.findViewById(R.id.textView1);
ProgressBar pb = (ProgressBar) grid.findViewById(R.id.progressBar1);
text.setText("Hai : " + position);
System.out.println("url[position]" + url[position]);
new DownloadImageTask(url[position], pb, image).execute();
return grid;
}
public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
String url = null;
ProgressBar pb = null;
ImageView imageview = null;
public DownloadImageTask(String url, ProgressBar pb, ImageView imageview) {
super();
this.url = url;
this.pb = pb;
this.imageview = imageview;
}
protected Bitmap doInBackground(String... pb_and_images) {
return getBitmapDownloaded(url);
}
protected void onPostExecute(Bitmap result) {
imageview.setVisibility(View.VISIBLE);
imageview.setImageBitmap(result);
pb.setVisibility(View.GONE);
}
/** This function downloads the image and returns the Bitmap **/
private Bitmap getBitmapDownloaded(String url) {
System.out.println("String URL " + url);
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream((InputStream) new URL(url)
.getContent());
return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
}
}