android - 在EditText之间如何使用自动完成android

标签 android autocomplete android-edittext

我知道如何在 android 中使用 EditText 以及如何在 android 中使用 AutoComplete EditText。但是 AutoComplete EditText 的用法类似于下拉列表,用户在其中键入一个字符,将显示建议,用户单击其中一个建议。如果没有建议,则不会显示任何文本。

我的要求是,考虑有一个 EditText。用户可以键入他们想要的任何内容,但是当单词以特殊字符(例如“@”)开头时,api 将命中并显示建议。

完整示例:

“我叫詹姆斯·邦德,我是@And”

在上面的例子中,当用户在“@And”末尾输入这句话时,它会显示来自点击 API 的自动建议(应该显示 Android),用户可以从列表中选择这个建议的词。

有什么办法可以实现吗?

请帮帮我。

谢谢。

最佳答案

Android 提供了MultiAutoCompleteTextView。使用此小部件而不是 EditText 并覆盖其分词器。

MultiAutoCompleteTextView myautocomplete = (MultiAutoCompleteTextView) findViewById(R.id.multy);
    ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, array_for_autocomplete);
    myautocomplete.setAdapter(adapter);

    myautocomplete.setTokenizer(new MultiAutoCompleteTextView.Tokenizer() {
        @Override
        public int findTokenStart(CharSequence text, int cursor) {
            int i = cursor;

            while (i > 0 && text.charAt(i - 1) != '@') {
                i--;
            }
            while (i < cursor && text.charAt(i) == ' ') {
                i++;
            }

            return i;
        }

        @Override
        public int findTokenEnd(CharSequence text, int cursor) {
            int i = cursor;
            int len = text.length();

            while (i < len) {
                if (text.charAt(i) == ',') {
                    return i;
                } else {
                    i++;
                }
            }

            return len;
        }

        @Override
        public CharSequence terminateToken(CharSequence text) {
            int i = text.length();

            while (i > 0 && text.charAt(i - 1) == ' ') {
                i--;
            }

            if (i > 0 && text.charAt(i - 1) == ',') {
                return text;
            } else {
                if (text instanceof Spanned) {
                    SpannableString sp = new SpannableString(text + ", ");
                    TextUtils.copySpansFrom((Spanned) text, 0, text.length(),
                            Object.class, sp, 0);
                    return sp;
                } else {
                    return text + ", ";
                }
            }
        }
    });

文档:http://developer.android.com/reference/android/widget/MultiAutoCompleteTextView.html

关于android - 在EditText之间如何使用自动完成android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757789/

相关文章:

java - 如何从上一个停止点下载数据?

状态栏中带有一个图标的Android GCM多个推送通知

asp.net - jQuery 自动完成和 ASP.NET

php - 输入字段词到php数组

android - EditText 上的自定义错误文本边框 android

java - 获取 Dbus 的 Java 绑定(bind)以在 Android 上运行

android - 在不使用上下文的情况下保存和加载文件 - Android

ruby-on-rails-4 - 具有同义词的自动完成搜索

java - 我的 ListView 重叠在我的编辑文本上

android - 更改Android数字键盘中的 "Done"按钮