Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AutoCompleteTextView:如何确保输入的值来自提供的建议?_Android_Autocompletetextview - Fatal编程技术网

Android AutoCompleteTextView:如何确保输入的值来自提供的建议?

Android AutoCompleteTextView:如何确保输入的值来自提供的建议?,android,autocompletetextview,Android,Autocompletetextview,我期待在我的应用程序中使用AutoCompleteTextView。我正在努力!我正在设置此视图的值列表,其中有300多个值。我想要实现的是,我希望用户输入文本并根据文本过滤值,而不是将其置于微调器中,滚动到所有可用值并选择一个。我还要确保输入的值来自可用的300个值 我已计划继续,当用户在该字段中输入值时,当他转到下一个字段时,我将使用这300个可用值验证该值!但我觉得这是一种耗时的方法 请帮助我,如果有一个有效的方法来实现这一点 更新: 从这个开始。 问问谷歌吧。找到了一个快速的例子 大多

我期待在我的应用程序中使用AutoCompleteTextView。我正在努力!我正在设置此视图的值列表,其中有300多个值。我想要实现的是,我希望用户输入文本并根据文本过滤值,而不是将其置于微调器中,滚动到所有可用值并选择一个。我还要确保输入的值来自可用的300个值

我已计划继续,当用户在该字段中输入值时,当他转到下一个字段时,我将使用这300个可用值验证该值!但我觉得这是一种耗时的方法

请帮助我,如果有一个有效的方法来实现这一点

更新:

从这个开始。


问问谷歌吧。找到了一个快速的例子

大多数示例使用strings.xml中的静态值填充列表。不是从strings.xml填充,而是修改适配器以从您拥有的任何内容(可能是数组)进行追加

至于问题的第二部分,验证用户是否正在输入列表中的值:1如果在文本框中输入非列表值,则自动完成列表将不会显示任何内容。2如果用户输入非列表值并单击enter键,您可以自己进行验证

ed = (EditText) findViewById(R.id.quickSearch);
ed.setImeActionLabel("Search",EditorInfo.IME_ACTION_SEARCH);
ed.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId,
            KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                   // do your validation here

我已经用过这个了。我只想确保列表中必须存在任何用户输入!谢谢你。我已经这样做了。我只是想知道是否有任何有效的方法可以进行验证。我唯一担心的是,如果列表中的值更多,比如假设1000,那么在这种情况下,进行比较所需的时间将太长!请参阅我的编辑,我也会尝试使用验证程序。
    public class CountriesActivity extends Activity implements TextWatcher{
         protected void onCreate(Bundle icicle) {
             super.onCreate(icicle);
             setContentView(R.layout.countries);

             ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                     android.R.layout.simple_dropdown_item_1line, COUNTRIES);
             AutoCompleteTextView textView = (AutoCompleteTextView)
                     findViewById(R.id.countries_list);
             textView.setAdapter(adapter);
         }

         private static final String[] COUNTRIES = new String[] {
             "Belgium", "France", "Italy", "Germany", "Spain"
         };
@Override
    public void afterTextChanged(Editable s) {
        if(!COUNTRIES.contains(s.toString();
textView.setText("");
        }
    }

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

    }

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

    }
     }
ed = (EditText) findViewById(R.id.quickSearch);
ed.setImeActionLabel("Search",EditorInfo.IME_ACTION_SEARCH);
ed.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId,
            KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                   // do your validation here