部分内容不明可参考:http://blog.csdn.net/joyhen/article/details/17319001
贴一下主要代码:
public override void ViewDidLoad() {
base.ViewDidLoad();
//show loading...
chongqing.LoadingOverlay loadingOverlay = new chongqing.LoadingOverlay(this.View.Bounds);
this.View.AddSubview(loadingOverlay);
//添加表格
TBView = new UITableView(this.View.Bounds);
TBView.BackgroundColor = UIColor.Clear;
TBView.AutoresizingMask = UIViewAutoresizing.All;
//TBView.Style = UITableViewStyle.Grouped;
this.View.Add(TBView);
ListAT = GetItems(); //获取数据
List < string > loadingimglist = new List < string > (); //初始化List对象,存储待下载的图片
foreach(ArticleModel am in ListAT) {
if (!string.IsNullOrWhiteSpace(am.Articleimg)) {
loadingimglist.Add(am.Articleimg);
}
}
if (loadingimglist.Count > 0) DownloadAsync(loadingimglist.ToArray());
else TBView.Source = new TableNewsList(this, ListAT);
//hide loading...
loadingOverlay.Hide();
}
/// <summary>
/// 下载文件
/// </summary>
async void DownloadAsync(params string[] imgarr) {
if (imgarr.Length == 0) return;
string _fullname = string.Empty; //图片名
for (int i = 0; i < imgarr.Length; i++) {
_fullname = imgarr[i].Substring(imgarr[i].LastIndexOf("/") + 1);
if (Tools.ArticleListImgLoaded(_fullname)) continue; //已经下载过了就不下载
using(WebClient webClient = new WebClient()) {
byte[] bytes = null;
try {
bytes = await webClient.DownloadDataTaskAsync(new Uri(imgarr[i]));
} catch(TaskCanceledException) {
return;
} catch(Exception e) {
Console.WriteLine(e.ToString());
return;
}
string localPath = KeyCenter.Key_LoadedImgPath + imgarr[i].Substring(imgarr[i].LastIndexOf("/") + 1);
//Save the image using writeAsync
FileStream fs = new FileStream(localPath, FileMode.OpenOrCreate);
await fs.WriteAsync(bytes, 0, bytes.Length);
}
}
TBView.Source = new TableNewsList(this, ListAT);
TBView.ReloadData(); //这一句一定要加上
}