【问题标题】:AutoCompleteTextView on "@" character typed Android“@”字符类型的 Android 上的 AutoCompleteTextView
【发布时间】:2015-08-21 04:55:30
【问题描述】:

我有一个社交消息应用程序,我正在创建一个包含用户名字符串列表的社交消息应用程序,并且希望 edittext 在键入消息并键入“@”时显示用户列表。

我该怎么做?

【问题讨论】:

    标签: android autocomplete android-edittext autocompletetextview social


    【解决方案1】:

    您可以添加TextWatcher 并动态更改AutoCompleteTextView 的适配器。仅更改数组并调用 notifyDataSetChanged() 似乎不起作用。

       autoCompleteView.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                        int occurrences = 0;
                        String enteredString = s.toString();
                        for (char c : enteredString.toCharArray()) {
                            if (c == '@') {
                                occurrences++;
                            }
                        }
                        if (occurrences == 1) {
                            String requiredString = enteredString.substring(0, enteredString.indexOf("@"));
                            email[0] = requiredString + "@gmail.com";
                            email[1] = requiredString + "@hotmail.com";
                             .
                             .
                            email[10] = requiredString + "@yahoo.com";
                            adapter = null;
                            adapter = new ArrayAdapter<>(MyActivity.this, android.R.layout.simple_list_item_1, email);
                            autoCompleteView.showDropDown();
                            autoCompleteView.setThreshold(0);
                            autoCompleteView.setAdapter(adapter );
                        } else if (occurrences == 0) {
                            autoCompleteView.dismissDropDown();
                        }
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
    
                }
            });
    

    这是用于在输入 '@' 时显示域列表。您可以修改代码以满足您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多