如何使用MvxImageView将图像显示到MvxListView中

时间:2016-03-21 09:03:57

标签: android xamarin mvvmcross

我在Xamarin.Android应用程序中有一个MvxListView,而一个ItemTemplate用于显示从WS检索的名称和图片。如果显示名称,则不是图片的情况......

View_Main.axml

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
  cell =[self.imgCllvw dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
  if(!cell)
  {
    cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
  }
  NSDictionary *tmpDict = [images objectAtIndex:indexPath.row];

  NSURL *url = [NSURL URLWithString:[tmpDict objectForKey:@"img"]];
  NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    if (data) {
      UIImage *image = [UIImage imageWithData:data];
      if (image) {
        dispatch_async(dispatch_get_main_queue(), ^{
          MyCell *cell = (id)[collectionView cellForItemAtIndexPath:indexPath];
          if (cell)
            cell.imageView.image = image;
        });
      }
    }
  }];
  [task resume];
  cell.layer.borderWidth=1.0f;
  cell.layer.borderColor=[UIColor colorWithRed:215.0/255.0 green:214.0/255.0 blue:214.0/255.0 alpha:1.0].CGColor;

  return cell;
}

item_list.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00007f"
    android:textColor="#ffffff"
    android:textSize="24dp"
    android:layout_margin="30dp"
    android:padding="20dp"
    android:layout_marginTop="10dp">
    <Mvx.MvxListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        local:MvxBind="ItemsSource ItemsModels"
        local:MvxItemTemplate="@layout/item_list" />
</LinearLayout>

我在AndroidManifest.xml中拥有互联网权限,并且我安装了DownloadCache和File插件。

网址很好,我在Visual Studio控制台中显示它们,当我点击它们时,图像显示。

我按照这个视频试图显示图像,但我不知道为什么它适用于他而不适合我......

https://www.youtube.com/watch?v=JBzj_nkeLFI

也许是因为他使用MvvmCross 3.0而我正在使用MvvmCross 4.0 ......

第一次编辑

我的ItemModel类

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="22dp"
        local:MvxBind="Text Name" />
    <Mvx.MvxImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"
        local:MvxBind="ImageUrl Image" />
</LinearLayout>

和Image属性的典型值:http://inu.tapptic.com/test/image.php?text=%E5%8D%81%E5%85%AB

问题不在于网址,我尝试使用在谷歌图片上找到的网址,而且它也不起作用

第二次编辑

public class ItemModel
{
    public string Name { get; set; }
    public string Image { get; set; }
    public string Text { get; set; }
    public bool IsFavorite { get; set; }
}

0 个答案:

没有答案