2015-03-10 2 views
1

Я пытаюсь понять, как я могу игнорировать все специальные символы и числа при поиске через ArrayList с помощью Edittext.Игнорирование символов при поиске ArrayList с Edittext

Вот пример:

Один из пунктов в моем ArrayList называется «00 - Bar 9», я хочу сделать так, чтобы при вводе в «Ба» отображается в моем 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

вместо '.equalsIgnoreCase() 'use' (String) songs.get (i) .toLower(). содержит (search.toLower())) ' – Dreagen

ответ

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)); 
} 
+1

Я не думаю, что это хороший способ сделать это. Вы выполняете 'subSequence' в списке песен, когда нет необходимости. – Dreagen

+0

@Dreagen да. обновил ответ – Fahim

+0

Я думаю, вы пропустили понимание того, что я имел в виду. Теперь это не работает. Я отредактирую его, чтобы показать, что я имел в виду – Dreagen

Смежные вопросы