【问题标题】:Activity is not changing活动没有变化
【发布时间】:2014-05-13 17:52:46
【问题描述】:

您能帮我解决以下问题吗? 我有一些代码:

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 方法完成后执行的,但我希望立即执行此代码。我该怎么做?

提前致谢

【问题讨论】:

    标签: android android-activity xamarin.android xamarin progressdialog


    【解决方案1】:

    等待对话框表明这是一个长时间运行的进程。你试过异步等待吗?

            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();
            });
        }
    

    【讨论】:

      【解决方案2】:

      您需要在更改适配器(或其数据)时通知您的 ListView。查看这个帖子的答案change ImageView Resource in a ListView Layout from an AsyncTask that load contactsList

      祝你好运

      【讨论】:

      • 它不仅发生在 ListView 上。它与任何控件一起发生 - 我无法从 Button_Click 事件处理程序中显示 ProgressDialog,我无法更改按钮的文本,我无法更改其他内容。它仅在 Button_Click 完成时工作,但我希望它立即在此事件处理程序中工作
      【解决方案3】:

      您需要重新加载列表视图才能在列表视图中查看受影响的更改。

      列表视图适用于myAdapter.notifyDataSetChanged() 方法,用于重新加载和刷新

      在这里,您可以使用 mAdapterobj.notifyDataSetChanged() 在您的 adpater 中创建任何方法,这样 Listview 就会知道数据现在正在发生变化 你也可以在你的 setadpater() 方法之后使用这个方法,

      对于您的进度对话框,您可以在搜索单击之外分配 obj 和所有必需的东西,只需使用 Show() 和 Hide 方法在进度对话框中工作

      希望对你有帮助

      【讨论】:

      • 它不仅发生在 ListView 上。它与任何控件一起发生 - 我无法从 Button_Click 事件处理程序中显示 ProgressDialog,我无法更改按钮的文本,我无法更改其他内容。它仅在 Button_Click 完成时工作,但我希望它立即在此事件处理程序中工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多