GridView是一种九宫格布局,创建Gridview的方式跟创建listview的差不多,GridView的子Item可以是文本,也可以是文本加图片,自行定义,只要在方法中添加就行。GridView加载本地图片可以直接用Drawable获取图片资源,但是如果想要加载网络图片的话,就得用异步任务,获取图片资源,然后再加载到GridView中。
首先先写一个类,声明Item里面的内容控件,这里我的Item中有3个TextView跟一个ImageView。

public ImageAndText(String imageUrl, String text,String text1,String text2) {this.imageUrl = imageUrl;this.text = text;this.text1 = text1;this.text2 = text2;}public String getImageUrl() {return imageUrl;}public String getText() {return text;}public String getText1() {return text1;}public String getText2() {return text2;} 

然后写一个adapter类,将控件写入到Adapter中,先创建一个List,再将控件放进去。

//创建adapterpublic ImageAndTextListAdapter(Activity activity, List<ImageAndText> imageAndTexts, GridView gridView1) {super(activity, 0, imageAndTexts);this.gridView = gridView1;asyncImageLoader = new AsyncImageLoader();}
//将对应的控件放入对应的资源文件Drawable cachedImage = asyncImageLoader.loadDrawable(imageUrl,Tag,new ImageCallback() {public void imageLoaded(Drawable imageDrawable, String imageUrl, String Tag) {ImageView imageViewByTag = (ImageView) gridView.findViewWithTag(Tag);if (imageViewByTag != null) {imageViewByTag.setImageDrawable(imageDrawable);}}});if (cachedImage == null) {imageView.setImageResource(R.drawable.longding);}else{imageView.setImageDrawable(cachedImage);}// Set the text on the TextViewTextView textView1 = viewCache.getTextView1();textView1.setText(imageAndText.getText1());TextView textView = viewCache.getTextView();textView.setText(imageAndText.getText());TextView textView2 = viewCache.getTextView2();textView2.setText(imageAndText.getText2());return rowView;} 

这里需要将xml中的Gridview重写一个类,然后引用这个类,重写的类继承Gridview。

public class Noscrollgridview extends GridView{public Noscrollgridview(Context context,AttributeSet attrs) {
super(context,attrs);
}
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, mExpandSpec);}
}
然后创建一个异步操作,开启新线程加载网络图片。public Drawable loadDrawable(final String imageUrl,final String Tag, final ImageCallback imageCallback) {if (imageCache.containsKey(imageUrl)) { SoftReference<Drawable> softReference = imageCache.get(imageUrl);Drawable drawable = softReference.get();if (drawable != null) {return drawable;}if(drawable == null){}}final Handler handler = new Handler() {public void handleMessage(Message message) {imageCallback.imageLoaded((Drawable) message.obj, imageUrl,Tag);}};new Thread() {@Overridepublic void run() {Drawable drawable = loadImageFromUrl(imageUrl);imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));Message message = handler.obtainMessage(0, drawable);handler.sendMessage(message);}}.start();return null;}     public static Drawable loadImageFromUrl(String url) {/*** 加载网络图片*/try {return Drawable.createFromStream(new URL(url).openStream(), "src");} catch (Exception e) {throw new RuntimeException();}public interface ImageCallback {public void imageLoaded(Drawable imageDrawable, String imageUrl,String Tag);           }
public Drawable loadDrawable1(String imageUrl, String tag2,
ImageCallback imageCallback) {
// TODO Auto-generated method stub
return null;
}

最后在activity中创建一个Gridview,方法跟创建Gridview方法一样,urls1为图片的网址。

private void initView1() {
gridview1 = (GridView) findViewById(R.id.gridview1);
// 实力化几个ImageAndText 对象
List<ImageAndText> listImageAndText1 = new ArrayList<ImageAndText>();
for (int i = 0; i < urls1.length; i++) {
ImageAndText iat = new ImageAndText(urls1[i], titlename1[i],
titlename2[i], titlename3[i]);
listImageAndText1.add(iat);
}
// Activity activity, List<ImageAndText> imageAndTexts, GridView
// gridView1
adapter1 = new ImageAndTextListAdapter(MainActivity.this,
listImageAndText1, gridview1);
gridview1.setAdapter(adapter1);
// 取消GridView默认点击背景图片
gridview1.setSelector(new ColorDrawable(Color.TRANSPARENT));
gridview1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent intent = new Intent(MainActivity.this, sss.class);
startActivity(intent);
}
});
} 

GridView加载网络图片相关推荐

  1. android studio 加载图片,Android Studio 加载网络图片

    Android Studio是基于gradle的一个Android开发软件,在引用网络图片的时候需要连接第三方库,这里介绍 引用glide的方法. 一.在github页面搜索glide,点击第一个 二 ...

  2. iOS开发swift版异步加载网络图片(带缓存和缺省图片)

    iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下: ...

  3. 【转载】一行代码加载网络图片到ImageView——Android Picasso

    原文链接:一句代码加载网络图片到ImageView--Android Picasso  注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...

  4. ios开发多线程篇--异步加载网络图片GCD

    一.异步加载网络图片 1.ATS (1)简介 从iOS9.0开始,如果按照以前的方式写代码,在访问网络的时候 ,会报以下警告信息: App Transport Security has blocked ...

  5. 【Flutter】Image 组件 ( 加载网络图片 | 加载静态图片 | 加载本地图片 | path_provider 插件 )

    文章目录 一.加载网络图片 二.加载静态图片 三.加载本地图片 四.完整代码示例 五.相关资源 一.加载网络图片 参考 [Flutter]Image 组件 ( Image 组件简介 | Image 构 ...

  6. Android Volley完全解析2:使用Volley加载网络图片

    原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 在上一篇文章中,我们了解了Volley到底是什么,以及它的 ...

  7. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片

    Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...

  8. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  9. android imageview 设置网络图片,ImageView加载网络图片

    android网络加载图片框架Android-Universal-Image-Loader功能非常强大,其开源地址https://github.com/nostra13/Android-Univers ...

最新文章

  1. 概率论—随机变量的数字特征、大数定律及中心极限定理
  2. POJ2955Brackets[区间DP]
  3. MySQL如何创建表时指定约束
  4. Chrome插件开发之一: 搭建基本结构
  5. 向模态窗体传递参数和获取返回值
  6. java用i/o查看文件_Java文件I / O基础
  7. Linux中断一网打尽(2) - IDT及中断处理的实现
  8. ValueError: operands could not be broadcast together with shapes (100,) (71,)
  9. 计算机专硕毕业论文写什么,关于学姐写硕士毕业论文的一些经验,分享给大家...
  10. $.ajax返回报错,请求ajax报错 返回readyState0
  11. E4A影视APP源码电视盒子酷点TV版4.5 后端对接苹果cms
  12. 生产计划:制定您的生产流程
  13. 【Python学习教程】Python变量类型和运算符
  14. mac 重命名文件快捷键
  15. qq怎么登陆不了微信
  16. python 给手机发送邮件消息
  17. 推荐的几个比较好的网站和博客
  18. IDL学习(对象):IDLffShape
  19. 74HC595 8位移位寄存器介绍
  20. java发送邮件,多人单人发送,抄送,密送,附件

热门文章

  1. python-读取excel文件
  2. 傅科摆的matlab分析,傅科摆的轨迹探究肖洪2014141221087.docx
  3. tp6.1 第三方filesystem扩展支持阿里云OSS和七牛和腾讯云COS)使用教程
  4. 拓嘉辰丰:拼多多商家在发货时需要注意的规则有哪些?
  5. 【供应链架构day1】美团IT系统在千团大战、两雄争霸中取胜之道
  6. 【转】罗明雄:P2P网贷三大模式之纯平台模式和债权转让模式
  7. 360酷派正式和解:360增持奇酷科技股份至75%
  8. 人工智能常常取代真正的智能吗?
  9. 5月6阴阳师服务器维护,阴阳师5月6日维护更新与优化内容一览
  10. python应用(1)两百行代码实现微信好友数据爬取与可视化