2015-05-15 1 views
0

У меня есть вид списка, который использует Адаптер списка в качестве адаптера для заполнения списка. Я исследовал онлайн, чтобы добавить поиск для этого, но все они используют ArrayAdapters. Поскольку я использую адаптер списка, функция getFilter() не работает. Это мой кодПоиск ListView, который использует ListAdapater, а не ArrayAdapter

inputSearch.addTextChangedListener(new TextWatcher() { 

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

        } 

        @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

Создать функцию в вашем адаптере, как это:

public void filter(String charText) { charText = charText.toLowerCase(Locale.getDefault()); objectList.clear(); if (charText.length() == 0) { objectList.addAll(objectAsArraylist); } else { for (Object v : objectAsArraylist) { objectList.add(v); } } notifyDataSetChanged(); }

где objectList список вы прошли к адаптеру, и objectAsArraylist является objectList прошел к ArrayList.

Затем вы можете вызвать этот метод на вашем onTextChanged:

adapter.filter(text)

+0

не имеют ArrayList. У меня есть SimpleAdapter и ListAdapter. Таким образом, функции 'addAll()' и 'add()' не работают. –

+0

Вы можете создать его, передав значения, которые вы хотите в списке, в arraylist. –

+0

'Список objectAsArraylist = новый ArrayList <>(); ' ' objectAsArraylist.addAll (objectList); ' –