C# 用于Android的Xamarin上的ListAdapter
我在Android Xamarin上使用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
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");
}
}