Android 如何自动将ListView字段的第一行传递给EditText字段

Android 如何自动将ListView字段的第一行传递给EditText字段,android,listview,android-studio,android-intent,android-edittext,Android,Listview,Android Studio,Android Intent,Android Edittext,我正在创建一个简单的应用程序,尝试学习功能和实现基本功能。我的主要目标是让语音命令在我打开一个应用程序并简单地说转到下一页,然后它就这样做了,等等。有没有一种方法可以使用android studio实现这一点,因为我没有遇到任何示例 我已经设法让语音识别工作,它在ListView中提供语音到文本的语句。我正在尝试创建一个简单的应用程序,其中有一个登录页面,用户可以键入正确的凭据并进入下一页,或者使用语音到文本来填充凭据,如果正确,将自动进入下一页 我的问题是,是否有一种方法可以自动将ListVi

我正在创建一个简单的应用程序,尝试学习功能和实现基本功能。我的主要目标是让语音命令在我打开一个应用程序并简单地说转到下一页,然后它就这样做了,等等。有没有一种方法可以使用android studio实现这一点,因为我没有遇到任何示例

我已经设法让语音识别工作,它在ListView中提供语音到文本的语句。我正在尝试创建一个简单的应用程序,其中有一个登录页面,用户可以键入正确的凭据并进入下一页,或者使用语音到文本来填充凭据,如果正确,将自动进入下一页

我的问题是,是否有一种方法可以自动将ListView中的第一行语句传递到当前为EditText字段的username字段中,然后在1-2秒后自动按下login按钮。我已经附加了主java文件来完成这项工作,非常感谢您对代码的帮助。请注意,目前我只是使用用户名进行验证,密码字段并不重要

ListView lv;
static final int check = 1111;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView)findViewById(R.id.lvVoiceReturn);
    Button b = (Button)findViewById(R.id.bVoice);
    b.setOnClickListener(this);///////////////////
}

public void onButtonClick(View v)
{
    if (v.getId() == R.id.Blogin)
    {
        EditText a = (EditText)findViewById(R.id.TFusername);
        String str = a.getText().toString();


        //Go to the next 'Display' window or activity if the person enters the correct username which is not case sensitive
        if (str.equalsIgnoreCase("next"))
        {
            Intent userintent = new Intent(MainActivity.this, Display.class);
            startActivity(userintent);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Incorrect Information", Toast.LENGTH_SHORT).show();
        }
    }
}

@Override
public void onClick(View v) {
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Please Repeat Again");
    startActivityForResult(i, check);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == check && resultCode == RESULT_OK){
        ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
        //??String selectedFromList = (lv.getItemAtPosition(position))////////
    }


    super.onActivityResult(requestCode, resultCode, data);
}
ListView-lv;
静态最终整数检查=1111;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lvVoiceReturn);
按钮b=(按钮)findViewById(R.id.bVoice);
b、 setOnClickListener(此)///////////////////
}
公共作废按钮单击(视图v)
{
if(v.getId()==R.id.Blogin)
{
EditText a=(EditText)findViewById(R.id.TFusername);
字符串str=a.getText().toString();
//如果此人输入了不区分大小写的正确用户名,请转到下一个“显示”窗口或活动
if(str.equalsIgnoreCase(“next”))
{
Intent userintent=newintent(MainActivity.this,Display.class);
startActivity(用户意图);
}
其他的
{
Toast.makeText(getApplicationContext(),“错误信息”,Toast.LENGTH_SHORT.show();
}
}
}
@凌驾
公共void onClick(视图v){
意图i=新意图(识别者意图、行动、识别、讲话);
i、 putExtra(RecognizerIntent.EXTRA语言模型,RecognizerIntent.LANGUAGE模型自由形式);
i、 putExtra(RecognizerIntent.EXTRA_提示“请再次重复”);
startActivityForResult(一,检查);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==check&&resultCode==RESULT\u确定){
ArrayList results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_results);
lv.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,results));
//?从列表中选择的字符串=(lv.getItemAtPosition(位置))////////
}
super.onActivityResult(请求代码、结果代码、数据);
}

}你可以这样做

a.setText((String)lv.getItemAtPosition(0));

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            b.performClick();
                        }
                    }, 2000);
第一行从listView的第一行设置editText,然后在2000毫秒(即2秒后)执行事件

完整代码:

ListView lv;
static final int check = 1111;
Button b;
EditText a;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv = (ListView)findViewById(R.id.lvVoiceReturn);
    b = (Button)findViewById(R.id.bVoice);
    a = (EditText)findViewById(R.id.TFusername);

    b.setOnClickListener(this);///////////////////
}

public void onButtonClick(View v)
{
    if (v.getId() == R.id.Blogin)
    {
        String str = a.getText().toString();


        //Go to the next 'Display' window or activity if the person enters the correct username which is not case sensitive
        if (str.equalsIgnoreCase("next"))
        {
            Intent userintent = new Intent(MainActivity.this, Display.class);
            startActivity(userintent);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "Incorrect Information", Toast.LENGTH_SHORT).show();
        }
    }
}

@Override
public void onClick(View v) {
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Please Repeat Again");
    startActivityForResult(i, check);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == check && resultCode == RESULT_OK){
        ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
        //??String selectedFromList = (lv.getItemAtPosition(position))////////

        a.setText((String)lv.getItemAtPosition(0));

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            b.performClick();
                        }
                    }, 2000);
    }


    super.onActivityResult(requestCode, resultCode, data);
}
ListView-lv;
静态最终整数检查=1111;
按钮b;
编辑文本a;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lvVoiceReturn);
b=(按钮)findViewById(R.id.bVoice);
a=(EditText)findViewById(R.id.TFusername);
b、 setOnClickListener(此)///////////////////
}
公共作废按钮单击(视图v)
{
if(v.getId()==R.id.Blogin)
{
字符串str=a.getText().toString();
//如果此人输入了不区分大小写的正确用户名,请转到下一个“显示”窗口或活动
if(str.equalsIgnoreCase(“next”))
{
Intent userintent=newintent(MainActivity.this,Display.class);
startActivity(用户意图);
}
其他的
{
Toast.makeText(getApplicationContext(),“错误信息”,Toast.LENGTH_SHORT.show();
}
}
}
@凌驾
公共void onClick(视图v){
意图i=新意图(识别者意图、行动、识别、讲话);
i、 putExtra(RecognizerIntent.EXTRA语言模型,RecognizerIntent.LANGUAGE模型自由形式);
i、 putExtra(RecognizerIntent.EXTRA_提示“请再次重复”);
startActivityForResult(一,检查);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==check&&resultCode==RESULT\u确定){
ArrayList results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_results);
lv.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,results));
//?从列表中选择的字符串=(lv.getItemAtPosition(位置))////////
a、 setText((字符串)lv.getItemAtPosition(0));
Handler=newhandler();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
b、 performClick();
}
}, 2000);
}
super.onActivityResult(请求代码、结果代码、数据);
}

PS:如果答案有帮助,请接受。

谢谢您的快速回复,我不知道该在代码中添加到哪里。我是否需要在任意位置指定用户名字段“TFusername”并将“Blogin”按钮分配给2000ms事件处理程序?我现在已将其复制粘贴到java文件中,处理程序出现问题,因此我按ALT+Enter并选择了java.util.logging.handler,但postDelayed给出了“无法解析方法”?没有记录,另一个处理器os处理器什么的。好吧,我想我们就快到了。因此,ListView现在出现在EditText中,但每2000毫秒之后,它就会按下speak按钮“bVoice”,而不是login按钮“Blogin”,哦,我把按钮弄混了,然后只需声明您的另一个bu