java - 自动完成 TextView 并选择一个字符串项目

标签 java android

我如何选择(例如“pila 9v”)并打开新屏幕? 这是我的代码,但是当我编写“pila”时,它会出现在自动完成列表中(pila 9v 和 pila 12v),当我选择“pila 12v”时,它会将我带到“pila 9v” Activity ,因为这是该单词在“字符串”中的第二个位置。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final String[] values = new String[]{"bateria 9v", "pila 9v", "bateria 12v", "pila 12v"};
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,values);
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.txtMercancias);
        textView.setThreshold(3);
        textView.setAdapter(adapter);
        textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this, "Item: " + adapter.getItem(position), Toast.LENGTH_SHORT).show();

                if (position==0) {
                    Intent myintent = new Intent(view.getContext(), Main2Activity.class);
                    startActivityForResult(myintent, 0);
                }
                if (position==1) {
                    Intent myintent = new Intent(view.getContext(), Main3Activity.class);
                    startActivityForResult(myintent, 1);
                }
                if (position==2){
                    Intent myintent = new Intent(view.getContext(),Main4Activity.class);
                    startActivityForResult(myintent,2);
                }
                if (position==3){
                    Intent myintent = new Intent(view.getContext(),Main5Activity.class);
                    startActivityForResult(myintent,3);
                }



            }
        });


    }
}

最佳答案

我在使用 AutoCompleteTextView 时也遇到了同样的问题并通过这种方式解决了它。

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    LinearLayout ll = (LinearLayout) view;
    //This will give you the string value of selected list item
    TextView listItem = (TextView) ll.getChildAt(0);
    //You can do this or apply own logic to find the selected value case
    Switch(listItem.getText().toString()) {
      case "bateria 9v": 
         Intent myintent0 = new Intent(view.getContext(), Main2Activity.class);
         startActivityForResult(myintent0, 0);
         break;
      case "pila 9v":
         Intent myintent1 = new Intent(view.getContext(), Main3Activity.class);
         startActivityForResult(myintent1, 1);
         break;
         //...

    }
    //or if condition
    if(listItem.getText().toString().equals(values[0]) {
      Intent myintent0 = new Intent(view.getContext(), Main2Activity.class);
      startActivityForResult(myintent0, 0);
    }
}

关于java - 自动完成 TextView 并选择一个字符串项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101200/

相关文章:

java - 如何从复选框 ListView 将变量设置为 true/false?

android - 在应用程序 onCreate 之前调用服务 onCreate

android - (BloC) StreamBuilder 总是 !snapshot.hasData

java - 比较两个列表 - 寻找更快、更有效的方法

java - Android Studio 在启动过程中卡在加载中

java - 你怎么知道一个类什么时候应该是抽象的?

java - 无法在 Volley 中模仿 POSTMAN 请求

java - 如何在没有 if 的情况下从字符串操作 a [sign] b 转换。

java - 如何使用 RxJava 2 来安排重试竞赛?

android - keystore 已被篡改或密码不正确