1

你能幫我解決以下問題嗎? 我有一些代碼:活動不變

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

等待對話框表明這是一個長時間運行的過程。你有沒有嘗試異步等待?

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

謝謝!有用! – Junior222

0

你需要,只要更改適配器(或數據)來通知您的ListView。檢查這個問題的答案後change ImageView Resource in a ListView Layout from an AsyncTask that load contactsList

好運

+0

它不僅發生在ListView中。它發生任何控制 - 我無法顯示來自Button_Click事件處理程序ProgressDialog,我不能更改按鈕的文本,我不能別的東西。它在Button_Click完成時工作,但我希望它在這個事件處理程序中立即工作 – Junior222

0

您需要重新加載你的列表視圖以查看列表視圖受影響的變化。

列表視圖工程對myAdapter.notifyDataSetChanged()方法重載和清涼

在這裏你可以創造任何方法在你mAdapterobj.notifyDataSetChanged() adpater所以ListView控件就會知道現在的數據發生了變化 您可以setadpater後,這種方法( )方法也

併爲您的進度對話框你可以分配OBJ和搜索點擊之外的所有需要​​的東西,只是使用展()和進展隱藏方法工作對話框

希望它可以幫助你

+0

它不僅與ListView發生。它發生任何控制 - 我無法顯示來自Button_Click事件處理程序ProgressDialog,我不能更改按鈕的文本,我不能別的東西。它在Button_Click完成後工作,但我希望它能立即在此事件處理程序中工作 – Junior222