2014-07-17 66 views
0

我现在通过使用xamarin.android在一个项目上。我在列表视图的屏幕和Imageview中有一个列表视图,我使用SimpleAdapter来显示集合中的数据。下面 是提取的数据采集功能:如何将图像设置为Xamarin中ListView内的ImageView?

private JavaList<IDictionary<string, Object>> TriggerNetResAndFill() 
    { 

     string uri = "http://www.51yam.com/forum.php?mod=recommend"; 
     string content = string.Empty; 
     var items = new JavaList<IDictionary<string, Object>>(); 
     var stream = streamPicker.GetUriStream(uri); 
     content = streamPicker.GetStreamText(stream); 

     HtmlDocument document = new HtmlDocument(); 
     document.LoadHtml(content); 

     HtmlNodeCollection keyNodes = document.DocumentNode.SelectNodes("//a[@class='xst']"); 
     foreach (HtmlNode keyNode in keyNodes) 
     { 
      var map = new JavaDictionary<string, Object>(); 
      map.Add(KEY_ICON, userInfoPicker.GetU()); 
      items.Add(map); 
     } 

     return items; 
    } 

的userInfoPicker.GetU()函数是试图从给定的URL获得JPEG资源,并返回流回调函数:在

public Bitmap GetU() 
    { 

     var stream = streamPicker.GetUriStream(iconU); 
     Bitmap usericon = BitmapFactory.DecodeStream(stream); 
     return usericon; 
    } 

然后主要活动,我做下面的东西:

protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 
     SetContentView (Resource.Layout.Main); 

     listview = (ListView)FindViewById<ListView> (Resource.Id.listContent); 

     processDialog = ProgressDialog.Show(this, "loading", "pls wait...", true); 

     new Thread(new ThreadStart(() => 
     { 
      RunOnUiThread(new Action(() => 
      { 
       listResult = TriggerNetResAndFill(); 

       var adapter = new SimpleAdapter(this, listResult, Resource.Drawable.list_content, 
       new String[] { KEY_ICON, KEY_TITLE, KEY_DESC }, 
       new int[] { Resource.Id.lvw_custom_img, Resource.Id.lvw_custom_name, Resource.Id.lvw_custom_description }); 
       listview.Adapter = adapter; 

       processDialog.Dismiss(); 

      })); 
     })).Start(); 
    } 

但结果是,我没有得到预期的图像。有没有人会给我这方面的建议?我是新来的xamarin和android,我只是一个C#呃。期待你的建议。谢谢。

回答

0

我不知道你如何实现你的ViewHolder,但通常你只需要设置从ViewHolderListView和内部InitializeViewViewHolder就可以像

image = rootView.FindViewById<ImageView>(Resource.Id.listViewImage); 
image.SetImageBitmap(yourMap[desiredKey]); 

东西,如果你想为任何清除ImageView的原因,你可以这样做:

image.SetImageBitmap(null); 

但是,如果位图从未设置,这可能解释为什么它不加载。

相关问题