1

3文字目と4文字目ごとにAutoCompleteTextViewを動的に更新しています。

何らかの理由で、ユーザーが3番目の文字を入力する時間の約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 に答える