2016-10-30 2 views
0

Я хотел найти слово в текстовом виде, которое содержит большой объем данных. Для этого я добавил опцию поиска в панели действий и попытался использовать setOnQueryTextListener. Однако я не могу использовать метод tv.getFilters(). Filter() в текстовом представлении. Этот метод отлично работает на адаптере массива. Не могли бы вы предложить, как искать текст в текстовом видеПоиск текста через поиск

Спасибо за помощь!

ответ

0

Сначала вызовите этот метод onQueryTextChange(). Смотри ниже.

@Override 
     public boolean onQueryTextChange(String s) { 
      filterListByPattern(s, List);// List is TextView Large amount of data convert each word as a list item. 
      return true; 
     } 

В filterListByPattern(),

private void filterListByPattern(String s, ArrayList<String> mainList) 
{ 
    for(int i = 0; i < mainList.size(); i++) 
    { 
     String word = mainList.get(i); 
     if(word.toLowerCase().toString().contains(s.toLowerCase().toString()))// if search word found in list 
     { 
      Spannable wordtoSpan = new SpannableString(word);   
      wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE));// change the color of the word in to blue. 
      mainList.set(i, wordtoSpan.toString())//color changed word update to the List. 
      break; 
     } 
    } 

    for(int i = 0; i < mainList.size(); i++) 
    { 
     String word = mainList.get(i); 
     tv.append(word);//append each word in List. search word will be blue color 
    } 


}