我试图找出在使用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
}
});
答案 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));
}