0

listviewデータベースからのデータを表示しましたが、指定されたキーワードでリストから特定のアイテムを検索したいと思います (大文字と小文字は無視します)。試してみましたが、期待した結果が得られませんでした。私が行ったコードに従って、エラーは発生していませんが、期待も満たしていません。さらに進むためにお役立てください。

ArrayList<String> bank=new ArrayList<String>();
EditText inputSearch;
inputSearch.addTextChangedListener(new TextWatcher() {

        private ArrayList<String> arrayList_sort = new ArrayList<String>();

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            int textlength=0;
            textlength=inputSearch.getText().length();
            if(arrayList_sort!=null)
                arrayList_sort.clear();
            for(int i=20;i<=bank.size();i++)
            {
                if(textlength<=bank.get(i).toString().length())
                {
                    //if(inputSearch.getText().toString().equalsIgnoreCase(String) bank.get(i).toString().subSequence(0, textlength)))
                    if (inputSearch
                            .getText()
                            .toString()
                            .equalsIgnoreCase(
                                    (String) bank.get(i).toString()
                                            .subSequence(0, textlength)))
                    {
                        arrayList_sort.add(bank.get(i));
                        Log.d("TAG", "log" + arrayList_sort.size());
                    }
                }
            }
        }
        public void beforeTextChanged(CharSequence cs, int arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub

        }
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub                          
        }
    });
} 

使用しBaseAdapterました。IndexOutOfBoundi の値が 0 の場合、エラー " " が返されます。

4

1 に答える 1

0

配列リストをクリアしないでください。getText() を実行してビューを検索することにより、3000 フープをジャンプするのではなく、データ構造を保持して検索します。あなたのコードはより速く、より小さくなります。

于 2013-05-11T05:33:49.047 に答える