自动完成固定选择?

时间:2012-01-27 07:35:14

标签: java android

如何根据字母而非固定开关案例进行自动完成选择?情况是,一切正常,除非我输入关键字“B”显示Badrul作为第一个建议,但点击它仍然会引用第一个开启Adidas.class而不是Badrul.class的开关案例

请帮忙,我是新手。 AutoComplete是否适合我的要求?

public class Search extends Activity
{
    public void onCreate(Bundle savedInstanceSate)
    {
        super.onCreate(savedInstanceSate);
        setContentView(R.layout.searchshop);

        AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, shops);
        autoComplete.setAdapter(adapter); 
        autoComplete.setThreshold(1);
        autoComplete.setOnItemClickListener(new OnItemClickListener()
        {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) 
        {
            switch(position)
            {
            case 0:
                startActivity(new Intent(Search.this, Adidas.class));
                break;
            case 1:
                startActivity(new Intent(Search.this, Affin.class));
                break;
            case 2:
                startActivity(new Intent(Search.this, AlamArt.class));
                break;
            case 3:
                startActivity(new Intent(Search.this, Badrul.class));
                break;
            }
        }
        });     
    }
    static final String[] shops = new String[]
            {
                "Adidas", "Affin Bank", "Alam Art Gallery", "Badrul"
            };
}

3 个答案:

答案 0 :(得分:2)

您要将 OnItemClickListener 添加到 AutoCompleteTextView 。关于Item Click Listener,我认为你不知道这件事。

onItemClick()方法中的位置变量存储在所显示的列表中单击的项目的位置。

您告诉显示 Badrul 的列表作为第一个建议,所以您点击的项目的位置为0 ,以便它转到案例0:< / strong>,以便调用 Adidas.class

我希望你从我的回答中理解这个问题。

答案 1 :(得分:1)

这是显而易见的行为,因为您指的是当前建议的位置,因此根据用户输入的内容会有所不同。为了达到您的目的,您需要根据以下内容更改您的代码:< / p>

public class Search extends Activity
{
    public void onCreate(Bundle savedInstanceSate)
    {
        super.onCreate(savedInstanceSate);
        setContentView(R.layout.searchshop);

        final AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, shops);
        autoComplete.setAdapter(adapter); 
        autoComplete.setThreshold(1);
        autoComplete.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                int index=999;
                for(int i=0;i<shops.length;i++)
                {
                    if(autoComplete.getText().toString().trim().equals(shops[i]))
                    {
                         index=i;
                         break;
                    }               
                }
                switch(index)
                {
                    case 0:
                         startActivity(new Intent(Search.this, Adidas.class));
                         break;
                    case 1:
                         startActivity(new Intent(Search.this, Affin.class));
                         break;
                    case 2:
                         startActivity(new Intent(Search.this, AlamArt.class));
                         break;
                    case 3:
                         startActivity(new Intent(Search.this, Badrul.class));
                         break;
                    default:
                         Toast.makeText(Search.this, "Invalid Selection", Toast.LENGTH_SHORT).show();
               }
           }
       });     
    }
    static final String[] shops = new String[]
    {
          "Adidas", "Affin Bank", "Alam Art Gallery", "Badrul"
    };
}

答案 2 :(得分:1)

先生。 Kenneth解决方案已经存在, Hiral 的答案,但您必须对其进行修改,以使无错误。

只需进行以下更改。

将以下代码行修改为两部分。

AutoCompleteTextView autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);

1。在 onCreate()

之前添加以下代码行
AutoCompleteTextView autoComplete;

2.修改原始行,如下所示

autoComplete = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);