您的位置:首页 > 理论基础 > 计算机网络

(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。



2. 建立一个数据型别
这边我制作了一个WebApi然后把它放置在Windows Azure上:
Json URL : http://benluwebapi.azurewebsites.net/api/values ,这个API会回传我已经放在Windows Azure上的文字以及照片资源位置。
然后去Json2csharp网站中Generate类别档案 http://json2csharp.com



直接把网址填进去,然后按下”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建立检视并且传递数据



参考信息

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#
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: