2013-03-21 190 views
0

我的應用程序時,我按發言列表視圖按鈕和打印結果,當我對結果點擊我想把它打印在吐司識別語音的....是語音識別Android應用

的問題,當我再次點擊按鈕,它會打印新文本和舊文本,例如在我第一次得到時:(不,現在,知道)我點擊否,它顯示「now」, 第二次給出(谷歌,不錯,谷歌),我按好,並打印「現在」,那麼「好」

我認爲它會記住整個列表視圖,可以請你幫我解決這個問題,這是代碼:

if (resultCode == Result.Ok) 
{ 
    IList<System.String> matches = data.GetStringArrayListExtra(RecognizerIntent.ExtraResults); 
    voice_list.Adapter = new ArrayAdapter<System.String>(this, Android.Resource.Layout.SimpleListItem1, matches); 
    voice_list.ItemClick += delegate(object sender, Android.Widget.AdapterView.ItemClickEventArgs e) 
    { 
     var t = matches[e.Position]; 

     string TextToTranslate = t.ToString(); 

     Android.Widget.Toast.MakeText(this, TextToTranslate , Android.Widget.ToastLength.Long).Show(); 

    }; 
} 

回答

0

這是因爲您每次處理結果都要添加一個事件處理程序。 因此,第二次處理語音結果時會向ItemClick事件添加另一個事件處理程序。當您點擊一個項目時,這將導致2個事件處理程序。 試着移動這部分。但是請記住,如果將它移動到OnStart,當您從另一個屏幕返回時也會調用此方法。

不確定爲什麼你會再次顯示第一個,但也許你也必須在改變它之後觸發NotifyDataSetChanged到適配器。

我個人更喜歡爲適配器創建一個新的類,它是從BaseAdapter擴展而來的,在這裏你將用物品和itemsclicked來處理列表。 (例如:Custom ListAdapter for your ListView