2014-02-18 92 views
0

我看过以前所有关于此主题的问题,但无法得到我的头。它在Samsung Galaxy S4上进行了测试。这是来自我的activity_main.xml。列表视图和适配器傻瓜

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/llListe" 
    android:orientation="vertical" 
    > 
    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/lstListe" 
     android:layout_gravity="center" 
     android:background="#bcffb9" /> 
</LinearLayout> 

这是MainActivity.java。我已经测试了speechRecognizer的结果,并返回了口语单词。问题是将此字符串添加到ListView。我已经放弃了,所以请原谅。我究竟做错了什么?

public class MainActivity extends Activity implements View.OnClickListener { 

protected static final int REQUEST_OK = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    findViewById(R.id.btnSpeek).setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,"en-US"); 
    try { 
     startActivityForResult(intent,REQUEST_OK); 
    } catch (Exception e) { 
     Toast.makeText(this, "Unable to initialize speech engine.", Toast.LENGTH_LONG).show(); 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    ListView lv; 
    ArrayList<String> inputString = new ArrayList<String>(); 
    ArrayAdapter<String> adapter; 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode==REQUEST_OK && resultCode==RESULT_OK) { 
     inputString = (data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)); 
     //Toast.makeText(this,"You said "+inputString.get(0), Toast.LENGTH_SHORT).show(); 
     lv = (ListView) findViewById(R.id.lstListe); 
     adapter = new ArrayAdapter(this,R.id.lstListe,inputString); 
     lv.setAdapter(adapter); 

    } 
} 

}

+0

你会得到什么错误? – user666

+0

具体来说,你期望什么,该设备实际上做了什么? – NasaGeek

+0

@ user666我没有收到任何错误。 – Sjubussen

回答

1

我想你应该把此行super.onActivityResult(requestCode, resultCode, data);onActivityResult方法的其他条件,让你知道什么时候该请求代码REQUEST_OK执行代码。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    ListView lv; 
    ArrayList<String> inputString = new ArrayList<String>(); 
    ArrayAdapter<String> adapter; 

    if (requestCode==REQUEST_OK && resultCode==RESULT_OK) { 
     inputString = (data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)); 
     //Toast.makeText(this,"You said "+inputString.get(0), Toast.LENGTH_SHORT).show(); 
     lv = (ListView) findViewById(R.id.lstListe); 
     adapter = new ArrayAdapter(this,R.id.lstListe,inputString); 
     lv.setAdapter(adapter); 
    } 
    else { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 
}