C# 用于Android的Xamarin上的ListAdapter

C# 用于Android的Xamarin上的ListAdapter,c#,android,android-listview,xamarin,C#,Android,Android Listview,Xamarin,我在Android Xamarin上使用ListAdapter创建ListView。我在扩展ListActivity的活动中使用它 这是我的密码 ListAdapter = new ArrayAdapter<string> ( this, Android.Resource.Layout.SimpleListItem1, new string[] { "tes1", "tes2", "tes3" } ); 此下载事件已完成 void _DataServic

我在Android Xamarin上使用
ListAdapter
创建
ListView
。我在扩展ListActivity的活动中使用它

这是我的密码

ListAdapter = new ArrayAdapter<string> (
    this, 
    Android.Resource.Layout.SimpleListItem1, 
    new string[] { "tes1", "tes2", "tes3" }
);
此下载事件已完成

void _DataService_DownloadCompleted(object sender, EventArgs e)
        {
            var raw = ((DownloadEventArgs)e).ResultDownload;
            if(raw!=null)
            {
                _DataTopStories = JsonConvert.DeserializeObject<TopStoriesViewModel>(raw);
                CreateList();
                Log.Info("ds", "download completed");
            }
        }

在Android logcat中,不会显示“设置适配器”。它在ListAdapter上看起来已停止。

正常。找到了我的解决办法。要更新ListAdapter,我需要在UI线程上运行它,所以这是我的新下载完成事件

void _DataService_DownloadCompleted(object sender, EventArgs e)
        {
            var raw = ((DownloadEventArgs)e).ResultDownload;
            if(raw!=null)
            {
                _DataTopStories = JsonConvert.DeserializeObject<TopStoriesViewModel>(raw);
                RunOnUiThread(() => CreateList());
                //CreateList();
                Log.Info("ds", "download completed");
            }
        }
void\u数据服务\u下载完成(对象发送方,事件参数e)
{
var raw=((DownloadEventArgs)e).ResultDownload;
如果(原始!=null)
{
_DataTopStories=JsonConvert.DeserializeObject(原始);
RunOnUiThread(()=>CreateList());
//CreateList();
日志信息(“ds”,“下载完成”);
}
}

如果我在xamarin中读到它为true,则无需设置适配器。因为我只是在OnCreate()中使用它,而且它可以工作。你是对的:)那么Application.Context就错了。。您需要使用活动上下文…我已经在更改应用程序。上下文到这个,但仍然不起作用
private void CreateList()
        {
            Log.Info("ds", "list");
            ListAdapter = new ArrayAdapter<string>(Application.Context, Android.Resource.Layout.SimpleListItem1, new string[] { "tes4", "tes52", "tes6" });
            Log.Info("ds", "set adapter");

        }
void _DataService_DownloadCompleted(object sender, EventArgs e)
        {
            var raw = ((DownloadEventArgs)e).ResultDownload;
            if(raw!=null)
            {
                _DataTopStories = JsonConvert.DeserializeObject<TopStoriesViewModel>(raw);
                RunOnUiThread(() => CreateList());
                //CreateList();
                Log.Info("ds", "download completed");
            }
        }