你可以帮我解决以下问题吗? 我有一些代码:
button.Click += (sender, e) => Search_Click();
....
void Search_Click()
{
// here i'am trying to clear some ListView
var list = FindViewById<ListView> (Resource.Id.terminalsList);
list.Adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, new List<string>());
// here i am trying to show ProgressDialog
ProgressDialog progress = new ProgressDialog(this);
progress.SetMessage("Wait while loading...");
progress.Show();
// but here i haven't ProgressDialog and clear ListView yet
......
// another code
}
但是这段代码不能正常工作。在Search_Click方法完成后,此代码已执行,但我希望此代码立即执行。我该怎么做?
提前致谢
答案 0 :(得分:0)
每当更改适配器(或其数据)时,都需要通知ListView。检查此帖change ImageView Resource in a ListView Layout from an AsyncTask that load contactsList
的答案 祝你好运答案 1 :(得分:0)
您需要重新加载列表视图才能在Listview中查看受影响的更改。
列表视图适用于myAdapter.notifyDataSetChanged()
方法,用于重新加载和刷新
在这里,您可以使用mAdapterobj.notifyDataSetChanged()
在adpater中创建任何方法,以便Listview知道数据现在正在发生变化
您也可以在setadpater()方法之后使用此方法,
对于你的进度对话框,你可以在搜索点击之外分配obj和所有必需的东西,只需使用Show()和Hide方法在进度对话框中工作
希望它可以帮到你
答案 2 :(得分:0)
等待对话框表明这是一个长时间运行的过程。你试过异步等待吗?
button.Click += async delegate
{
await Search_Click();
};
}
Task Search_Click()
{
return Task.Factory.StartNew (() =>
{
// here i'am trying to clear some ListView
// here i am trying to show ProgressDialog
var progress = new ProgressDialog (this);
progress.SetMessage ("Wait while loading...");
progress.Show ();
// but here i haven't ProgressDialog and clear ListView yet
progress.Dismiss();
});
}