android – 如何动态地向autocompletetextview添加建议并保留字符状态

android – 如何动态地向autocompletetextview添加建议并保留字符状态,第1张

概述问题描述: 我在AutoCompleteTextView面临一些问题,我必须在每次按键后显示建议. 事实是,建议列表是像谷歌的建议功能一样动态. 这意味着应该在用户输入时添加新建议,并且应显示所有匹配的旧建议. 例如 我写“te”然后它应该显示之前的建议,如“test1”& “test2”以及我将从Web API获得的新建议.假设web api给了我“茶”字样的信息. “紧张”. 现在,AutoC 问题描述:

我在autoCompleteTextVIEw面临一些问题,我必须在每次按键后显示建议.
事实是,建议列表是像谷歌的建议功能一样动态.
这意味着应该在用户输入时添加新建议,并且应显示所有匹配的旧建议.

例如

我写“te”然后它应该显示之前的建议,如“test1”& “test2”以及我将从Web API获得的新建议.假设web API给了我“茶”字样的信息. “紧张”.

现在,autoCompleteTextVIEw将“te”作为字符串,其下方显示所有四个建议.

这正是我要找的.

看起来很简单,但它显示出一种奇怪的行为.

我正在使用我在全局声明的默认ArrayAdapter类实例.

arrayAdapter=new ArrayAdapter<String>(this,androID.R.layout.simple_dropdown_item_1line,suggestions);word.setAdapter(arrayAdapter);

建议是ArrayList.

从WebAPI获得新结果后,我只需致电

arrayAdapter.notifyDataSetChanged();

刷新数据观察者和附加的视图(在我们的例子中是autoCompleteListVIEw).

但它结束了建议.

当我不使用notifyDataSetChanged();无论我输入的字符是什么,它都会显示所有建议.

我尝试使用自定义过滤器,因为我不能使用notifyDataSetChanged(),但没有一个是有用的.

我发布图片以避免混淆.

我有一个混乱,为什么notifyDataSetChanged();它不起作用.我没有使用具有相同arrayAdapter实例的列表的任何其他引用.我真的怀疑它是否是参考问题.

解决方法 这是最简单的方法之一(将代码放在onCreate中):

编辑:addIEd wikipedia免费opensearch(如果https://en.wikipedia.org不起作用,请尝试http://en.wikipedia.org)

autoCompleteTextVIEw actv = new autoCompleteTextVIEw(this);    actv.setThreshold(1);    String[] from = { "name","description" };    int[] to = { androID.R.ID.text1,androID.R.ID.text2 };    SimpleCursorAdapter a = new SimpleCursorAdapter(this,androID.R.layout.simple_List_item_2,null,from,to,0);    a.setStringConversionColumn(1);    FilterqueryProvIDer provIDer = new FilterqueryProvIDer() {        @OverrIDe        public Cursor runquery(CharSequence constraint) {            // run in the background thread            Log.d(TAG,"runquery constraint: " + constraint);            if (constraint == null) {                return null;            }            String[] columnnames = { BaseColumns._ID,"name","description" };            MatrixCursor c = new MatrixCursor(columnnames);            try {                String urlString = "https://en.wikipedia.org/w/API.PHP?" +                        "action=opensearch&search=" + constraint +                        "&limit=8&namespace=0&format=Json";                URL url = new URL(urlString);                inputStream stream = url.openStream();                BufferedReader reader = new BufferedReader(new inputStreamReader(stream));                String JsonStr = reader.readline();                // output ["query",["n0","n1",..],["d0","d1",..]]                JsONArray Json = new JsONArray(JsonStr);                JsONArray names = Json.getJsONArray(1);                JsONArray descriptions = Json.getJsONArray(2);                for (int i = 0; i < names.length(); i++) {                    c.newRow().add(i).add(names.getString(i)).add(descriptions.getString(i));                }            } catch (Exception e) {                e.printstacktrace();            }            return c;        }    };    a.setFilterqueryProvIDer(provIDer);    actv.setAdapter(a);    setContentVIEw(actv,new VIEwGroup.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT,VIEwGroup.LayoutParams.WRAP_CONTENT));
总结

以上是内存溢出为你收集整理的android – 如何动态地向autocompletetextview添加建议并保留字符状态全部内容,希望文章能够帮你解决android – 如何动态地向autocompletetextview添加建议并保留字符状态所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1136853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存