1

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

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

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*.
}
4

2 回答 2

0

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

于 2013-05-20T09:38:15.827 回答
0

检查这个。但我正在使用文本观察器。我没有尝试过。你必须自己做并检查错误。

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.

            }


        }
于 2013-05-20T10:27:59.950 回答