(14)[Xamarin.Android] 异步的网络图片下载
2015-08-20 16:31
633 查看
原文 [Xamarin.Android] 异步的网络图片下载
在设计要从网络上接大量数据并且显示在Android Listview中,而这些资料是利用Json格式传送并且数据中包含这图片档案。 那在Xamarin中如何实作这种异步下载的观念?
*在阅读这一篇前,建议可以先看一下当麻哥的如何客制化的ListView之章
http://www.dotblogs.com.tw/junegoat/archive/2013/07/17/c-sharp-xamarin-android-customize-listitem-baseadapter.aspx
要客制化ListView,基本上就是四个步骤 :
1. 建立一个客制的Layout。
2. 建立一个数据型别。
3. 建立一个客制的Adapter。
4. 在View中建立检视
1. 建立一个客制的Layout
在这个lab中,客制化的View的部分我建立了三个View,分别是两个TextView与一个ImageView。
![](http://www.thinkpower.com.tw/xamarin/cn/images/a14-1.gif)
2. 建立一个数据型别
这边我制作了一个WebApi然后把它放置在Windows Azure上:
Json URL : http://benluwebapi.azurewebsites.net/api/values ,这个API会回传我已经放在Windows Azure上的文字以及照片资源位置。
然后去Json2csharp网站中Generate类别档案 http://json2csharp.com 。
![](http://www.thinkpower.com.tw/xamarin/cn/images/a14-2.gif)
直接把网址填进去,然后按下”Generate”后,可以得到这个Json档案的对应类别。
public class RootObject{
public string title { get; set; }
public string detail { get; set; }
public string image { get; set; }
}
3. 建立一个客制的Adapter
比较详细的信息就请参考当麻许的文章,这边相对应他的文章只改了两行程序代码。
3.1 这个范例因为会使用到异步下载图片,所以这边要去下载MonoDroid.UrlImageViewHelper 这个项目文件。下载回来后在Xamarin里面编译这一个档案,得到UrlImageViewHelper.dll档案。 下载位置:
https://github.com/Redth/MonoDroid.UrlImageViewHelper
在专案中把这个UrlImageViewHelper.dll档案加入参考。
3.2 在客制化的Customer View中,在Layout读画面的部分加入底下的Code。 这样Android再读取网络图片数据的时候就会以异步的方式下载。
var imageView = view.FindViewById (Resource.Id.imageView1);
UrlImageViewHelper.UrlImageViewHelper.SetUrlDrawable(imageView, item.image);
4. 在View建立检视并且传递数据
![](http://www.thinkpower.com.tw/xamarin/cn/images/a14-3.gif)
参考信息
Asynchronous Image Loading (from URL)
http://forums.xamarin.com/discussion/799/listview-asynchronous-image-loading-from-url
MonoDroid.UrlImageViewHelper
https://github.com/Redth/MonoDroid.UrlImageViewHelper
UrlImageViewHelper for Java
https://github.com/koush/UrlImageViewHelper#
在设计要从网络上接大量数据并且显示在Android Listview中,而这些资料是利用Json格式传送并且数据中包含这图片档案。 那在Xamarin中如何实作这种异步下载的观念?
*在阅读这一篇前,建议可以先看一下当麻哥的如何客制化的ListView之章
http://www.dotblogs.com.tw/junegoat/archive/2013/07/17/c-sharp-xamarin-android-customize-listitem-baseadapter.aspx
要客制化ListView,基本上就是四个步骤 :
1. 建立一个客制的Layout。
2. 建立一个数据型别。
3. 建立一个客制的Adapter。
4. 在View中建立检视
1. 建立一个客制的Layout
在这个lab中,客制化的View的部分我建立了三个View,分别是两个TextView与一个ImageView。
![](http://www.thinkpower.com.tw/xamarin/cn/images/a14-1.gif)
2. 建立一个数据型别
这边我制作了一个WebApi然后把它放置在Windows Azure上:
Json URL : http://benluwebapi.azurewebsites.net/api/values ,这个API会回传我已经放在Windows Azure上的文字以及照片资源位置。
然后去Json2csharp网站中Generate类别档案 http://json2csharp.com 。
![](http://www.thinkpower.com.tw/xamarin/cn/images/a14-2.gif)
直接把网址填进去,然后按下”Generate”后,可以得到这个Json档案的对应类别。
public class RootObject{
public string title { get; set; }
public string detail { get; set; }
public string image { get; set; }
}
3. 建立一个客制的Adapter
比较详细的信息就请参考当麻许的文章,这边相对应他的文章只改了两行程序代码。
3.1 这个范例因为会使用到异步下载图片,所以这边要去下载MonoDroid.UrlImageViewHelper 这个项目文件。下载回来后在Xamarin里面编译这一个档案,得到UrlImageViewHelper.dll档案。 下载位置:
https://github.com/Redth/MonoDroid.UrlImageViewHelper
在专案中把这个UrlImageViewHelper.dll档案加入参考。
3.2 在客制化的Customer View中,在Layout读画面的部分加入底下的Code。 这样Android再读取网络图片数据的时候就会以异步的方式下载。
var imageView = view.FindViewById (Resource.Id.imageView1);
UrlImageViewHelper.UrlImageViewHelper.SetUrlDrawable(imageView, item.image);
4. 在View建立检视并且传递数据
![](http://www.thinkpower.com.tw/xamarin/cn/images/a14-3.gif)
参考信息
Asynchronous Image Loading (from URL)
http://forums.xamarin.com/discussion/799/listview-asynchronous-image-loading-from-url
MonoDroid.UrlImageViewHelper
https://github.com/Redth/MonoDroid.UrlImageViewHelper
UrlImageViewHelper for Java
https://github.com/koush/UrlImageViewHelper#
相关文章推荐
- android判断网络是否可用
- tcpdump笔记
- 网络基础知识小小说
- 第一次
- Windows Sockets 网络编程——第十章 支持例程
- BP简单的理解神经网络
- 基于TCP协议实现服务器和客户端的通信程序
- 隐藏 HttpClient 在console的日志
- 再说重写IHttpHandler,实现前后端分离
- NFS网络文件系统
- 我对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的理解和图解
- hdu 4291 2012成都赛区网络赛 矩阵快速幂 ***
- TCP与UDP的区别
- android-async-http使用
- HttpClient v4.5 简单抓取主页数据
- iOS系统网络抓包方法
- iOS tcpdump抓包方法
- iOS系统网络抓包方法
- arm wifi驱动编译及无线wifi网络管理
- android操作通过http与服务器通信