1

からの最初のエントリのみを表示する必要がありArraylistます。

以下の私のコードはすべての結果を示していますが、リストの最初のエントリのみが必要です。

wordsListの名前ですListView

ArrayList <<String>> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,matches));

完全なメソッドコード:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) 
    { 
        // Populate the wordsList with the String values the recognition engine thought it heard 
        ArrayList<String> matches = data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); 
        wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches.get(0)));
    }
}
4

3 に答える 3

0

から最初の要素のみが必要なので、新しい要素を作成し、最初の要素を新しいに追加するArrayList<String> matches必要があります。List<String>List

次に、その新しいListをに使用しAdapterます。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
        // Populate the wordsList with the String values the recognition engine thought it heard 
        ArrayList<String> matches = 
                data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS);

        if (matches.size() > 0) {
            List<String> oneMatch = new ArrayList<String>();
            oneMatch.add(matches.get(0));

            wordsList.setAdapter(
                new ArrayAdapter<String>(
                     this, android.R.layout.simple_list_item_1, oneMatch));
        } else {
            Log.e(TAG, "Matches does not contain any values.");
        }
    }
}
于 2012-08-08T19:36:47.517 に答える
0

の最初の要素を取得しようとしている場合は、ArrayListクラスArrayListのメソッドを使用する必要があります。get(int)したがって、あなたの場合matches.get(0)、の最初の要素を取得しますmatches ArrayList。「最初のデータ」の意味を明確にして、可能な限り最良の回答を提供できるようにしてください。

于 2012-08-08T19:39:23.993 に答える
0

最初のアイテムのみを表示したい場合は、次のようにします。

ArrayList <<String>> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,matches.get(0)));

これをに変更するとmatches.get(0)、リストの最初のStringオブジェクトのみがアダプターに渡されます。ただし、アイテムが1つしかないアダプターを使用するのは非効率的であるため、何をしているのかわかりません。

于 2012-08-08T19:42:25.940 に答える