语音识别android应用程序

当我按下发言按钮并在列表视图上打印结果时,我的应用程序识别语音,当我点击结果时,我想要将它打印在烤面包上….

问题是,当我再次点击按钮时,它会打印新文本和旧文本,例如我第一次得到:(不,现在,知道)我点击否,它显示“现在”,第二次给(谷歌,好,谷歌)我按好,它打印“现在”然后“好”

我想它记得整个listview,请你帮我解决这个问题,这是代码:

if (resultCode == Result.Ok) { IList matches = data.GetStringArrayListExtra(RecognizerIntent.ExtraResults); voice_list.Adapter = new ArrayAdapter(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(); }; } 

这是因为每次处理结果时都会添加一个事件处理程序。 因此,第二次处理语音结果时,会向ItemClick事件添加另一个事件处理程序。 当您单击某个项目时,这将导致2个事件处理程序。 尝试移动这部分。 但是请记住,如果你将它移动到OnStart,当你从另一个屏幕回来时也会调用它。

不确定为什么你再次显示第一个,但也许你必须在更改后触发NotifyDataSetChanged到适配器。

我个人更喜欢为BaseAdapter扩展的适配器创建一个新类,您将在其中处理包含项目和项目的列表。 (例如: ListView的自定义ListAdapter )