【问题标题】:speech recognition android application语音识别安卓应用
【发布时间】:2013-03-21 19:43:37
【问题描述】:

当我按下说话按钮并在列表视图上打印结果时,我的应用程序识别语音,当我点击结果时,我希望它在 toast 上打印......

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

我认为它记住了整个列表视图,请你帮我解决这个问题,这是代码:

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

    }; 
}

【问题讨论】:

    标签: c# visual-studio-2012 xamarin


    【解决方案1】:

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

    不太清楚为什么会再次显示第一个,但也许您还必须在更改适配器后触发 NotifyDataSetChanged。

    我个人更喜欢为适配器创建一个从 BaseAdapter 扩展的新类,您将在其中处理包含项和项单击的列表。 (例如:Custom ListAdapter for your ListView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多