1

我在每 3 个/第 4 个字母上动态更新我的 AutoCompleteTextView。

出于某种原因,大约 5-10% 的时间在用户键入第三个字母时,虽然我确定我正在制作一个有效的数组列表并填充 AutoCompleteTextView,但它不会针对特殊情况显示。我注意到一致的是,未显示的单词列表长度为 5-15(其他范围为 50+)

知道发生了什么吗?我是否遗漏了一些关于 AutoCompleteTextView 的内容,如果数据列表没有那么大,它认为显示 10 条左右的建议是不值得的?我应该添加不相关的文件管理器数据还是会影响性能?谢谢

这是一些相关的源代码..

用于文本视图的 Textwatcher 检查;

    if (((start + count) == 3) || ((start + count) == 4)
                                || ((start == 3) && (before >= 1))) {
                            if (!last.equals(s)) {
                                thread = new Thread(new AutoCompleteThread(s));
                                thread.start();
                            }
                        }

在我的自定义线程中,我将单词分组......然后我在我的文本视图和适配器上调用它;

                    if(words.size() > 0)
                    {
                        last = s;
//                      adapter.clear();
//                      for(String e : words)
//                          adapter.add(e);
//                      adapter.notifyDataSetChanged();
                        adapter = new ArrayAdapter<String>(
                                getActivity(), android.R.layout.simple_list_item_1, words);
                        textView.setAdapter(adapter);

                        textView.showDropDown();
                    }
4

1 回答 1

0

事实证明,如果我的动态加载列表非常小并且我的原始列表(来自我的 RES 文件夹)非常大(500 左右),那么经常会发生一个奇怪的故障。当动态加载的列表很大时它不会出现故障,也许它给了 AutoCompleteTextView 足够的时间来在加载时显示建议?不确定。

无论如何,解决方案是降低我的 res 文件夹中 arraylist 的原始大小

于 2012-10-14T20:15:47.713 回答