如何在Android中实现从EditText中间自动填充文本?

4
我正在开发一款安卓联系人管理项目。我希望在用户注册时自动填写电子邮件地址的结尾部分。 例如,当用户输入用户名时,应自动提供 @gmail.com 或 @outlook.com 等建议。以下是我的代码的一小部分:
String[] maindb = {"@gmail.com", "@rediffmail.com", "@hotmail.com", "@outlook.com"};

mail = (AutoCompleteTextView) findViewById(R.id.A1_edt_mail);

ArrayAdapter<String> adpt = new ArrayAdapter<String>(this, R.layout.support_simple_spinner_dropdown_item, maindb);
mail.setAdapter(adpt);

我得到了这样的输出结果

图片在这里

但是我希望当用户输入他/她的用户名时,应该出现这个建议,但它没有出现。

图片在这里

我的问题不是重复的android如何将EditText作为自动完成这个问题。我的问题与此不同。

提前致谢。


不错的问题,兄弟。我想尝试这个逻辑并让你知道。 - Varad Mondkar
嘿,谢谢兄弟。我在等待解决方案。 - Nitin
1个回答

3
我建议在设置适配器之前,将电子邮件中的文本附加到主数据库中的每个字符串中-->使用TextWatcher检测邮件视图上的更改。 编辑 也许这正是你要找的。
final ArrayList<String> maindb = new ArrayList<>();
    maindb.add("@gmail.com");
    maindb.add("@rediffmail.com");
    maindb.add("@hotmail.com");
    maindb.add("@outlook.com");
    final ArrayList<String> compare = new ArrayList<>();
    final ArrayAdapter<String> adpt = new ArrayAdapter<String>(MainActivity.this, R.layout.support_simple_spinner_dropdown_item, compare);
    Word.setAdapter(adpt);
    Word.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) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() >= 0)
                if (!s.toString().contains("@")) {
                    compare.clear();
                    for (String aMaindb : maindb) {
                        aMaindb = s + aMaindb;
                        compare.add(aMaindb);
                    }
                    adpt.clear();
                    adpt.addAll(compare);
                }
        }
    });

希望这能帮到你。

我不明白,请您能否解释一下? - Nitin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接