如何在Xamarin中的ListView中将图像设置为ImageView?

如何在Xamarin中的ListView中将图像设置为ImageView?,listview,xamarin,Listview,Xamarin,我现在正在使用xamarin.android进行一个项目。我在屏幕上有一个listview,在listview中有一个Imageview,我使用SimpleAdapter来显示集合中的数据。 以下是提取数据采集的函数: private JavaList<IDictionary<string, Object>> TriggerNetResAndFill() { string uri = "http://www.51yam.com/forum.php

我现在正在使用xamarin.android进行一个项目。我在屏幕上有一个listview,在listview中有一个Imageview,我使用SimpleAdapter来显示集合中的数据。 以下是提取数据采集的函数:

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;
    }
然后在mainactivity中,我做了以下工作:

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();
    }
protectedoverride void OnCreate(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
listview=(listview)FindViewById(Resource.Id.listContent);
processDialog=ProgressDialog.Show(这是“正在加载”,“请等待…”,true);
新线程(新线程开始(()=>
{
RunOnUiThread(新操作(()=>
{
listResult=TriggerNetResAndFill();
var adapter=new simpledapter(这个,listResult,Resource.Drawable.list\u内容,
新字符串[]{KEY_图标,KEY_标题,KEY_DESC},
新int[]{Resource.Id.lvw_custom_img,Resource.Id.lvw_custom_name,Resource.Id.lvw_custom_description});
Adapter=适配器;
processDialog.discouse();
}));
})).Start();
}

但结果是,我没有得到预期的图像。有人能给我一些建议吗?我是xamarin和android的新手,我只是一个C#er。期待你的建议。thx.

我不确定你是如何实现你的
视图持有者的,但是通常你只需要用你的
列表视图设置一个
视图持有者
,在
视图持有者
中初始化视图
,你可以做如下操作

image = rootView.FindViewById<ImageView>(Resource.Id.listViewImage);
image.SetImageBitmap(yourMap[desiredKey]);
但是如果位图从未设置,这可能解释了为什么它没有加载

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