使用Edittext搜索ArrayList时忽略字符

时间:2015-03-10 13:57:38

标签: android

我试图找出在使用Edittext搜索ArrayList时如何忽略所有特殊字符和数字。

以下是一个例子:

我的ArrayList中的一个项目叫做“00 - Bar 9”,我想这样做,当我输入“Ba”时它会显示在我的ListView中。使用我没有显示的代码,因为我需要输入“00”开始。

我不确定能做到这一点需要做些什么?谢谢

search.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2,
                int arg3) {
            // When user changed the Text

            hasinputtext = true;

            temp = new ArrayList<String>();
            int textlength = search.getText().length();

            temp.clear();
            for (int i = 0; i < songs.size(); i++) {
                if (textlength <= songs.get(i).length()) {

                    if (search
                            .getText()
                            .toString()
                            .equalsIgnoreCase(
                                    (String) songs.get(i).subSequence(0,
                                            textlength))) {
                        temp.add(songs.get(i));
                    }
                }
            }

            getListView().setAdapter(
                    new ArrayAdapter<String>(getActivity(),
                            android.R.layout.simple_list_item_1, temp));

        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1,
                int arg2, int arg3) {
            // TODO Auto-generated method stub

        }

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

1 个答案:

答案 0 :(得分:1)

而不是

if (search.getText().toString() .equalsIgnoreCase((String) songs.get(i).subSequence(0,textlength))) {
                temp.add(songs.get(i));
            }

使用

if ((String)songs.get(i).toLowerCase().contains(search.getText().toString().toLowerCase())){
    temp.add(songs.get(i));
}