如何限制用户输入自动完成中的选项?

时间:2013-05-20 09:36:34

标签: android autocomplete

我创建了一个自动完整的文本视图,从一组特定的值中获取数据。我希望用户只能从提供的值中进行选择,而不能继续进行任何其他选择。

我一直在寻找一个可行的答案,但是没有得到任何帮助。在这方面的任何帮助将不胜感激。

PS:请注意我已经尝试了明显的文本更改观察器方法等,我正在寻找更有价值的东西。谢谢! :)

请求的代码:(通常的基本自动完成代码)

   autoText.setAdapter(this, android.R.layout.simple_dropdown_item_1line,arr);
   autoText.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                tool = my_adapter.getItem(position).toString();
            }
        });
   autoText.setOnItemSelectedListener(this);
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
{
    Intent i=new Intent(this,Home.class);
    startActivity(i);       
}

public void onNothingSelected(AdapterView<?> arg0)
{
}

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
{
    Intent i=new Intent(.this,Home.class);
    startActivity(i);       
}

public void afterTextChanged(Editable arg0)
{   }
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
        int arg3) 
{   }
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) 
{
    tool=null;
       // trying to capture the value of item selected in variable *tool*.
}

2 个答案:

答案 0 :(得分:0)

在xml ...的自动完成视图中使用数字标记,或使用inputType标记

答案 1 :(得分:0)

检查一下。但是我正在使用Text watcher。我没有尝试过。你必须自己动手并检查错误。

String[] YourArray={"foo","foo1","foo2"};
autoText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

            boolean flag=true;

            for(int i=0;i<YourArray.length;i++)
            {
            if(YourArray[i].contains(text.getText().toString()))
            {
                flag=false;
            }

            }

            if(flag==false)
            {
                String a=text.getText().toString();

                String b=a.substring(0, s.length()-1);

                text.setText(b);//If the text input by user is not in the array, we undo the user input by removing last character from edit text.

            }


        }