2016-03-25 3 views
0

У меня проблема с фильтром ListView, который не обновляется.Почему мой список не обновляется?

В моем приложении есть пользовательский ListView, который имеет два TextView и один ImageView в качестве элементов строки.

Фильтр работает отлично, но мой пользовательский ListView не обновляется в publishResults().

@Override 
protected FilterResults performFiltering(CharSequence constraint) 
{ 
    FilterResults results = new FilterResults(); 
    if (constraint == null || constraint.length() <= 0) { 
     results.count = ListAdapter.this.mStringFilterList.size(); 
     results.values = ListAdapter.this.mStringFilterList; 
    } else { 
     ArrayList<Ezomart> filterList = new ArrayList(); 
     for (int i = 0; i < ListAdapter.this.mStringFilterList.size(); i++) { 
      if (((Ezomart) ListAdapter.this.mStringFilterList.get(i)).getTitle().toUpperCase().contains(constraint.toString().toUpperCase())) { 
       Ezomart country = new Ezomart(); 
       country.setTitle(((Ezomart)ListAdapter.this.mStringFilterList.get(i)).getTitle()); 
       Log.d("SRI",mStringFilterList.get(i).getTitle()); 
       country.setSubCategory(((Ezomart) ListAdapter.this.mStringFilterList.get(i)).getSubCategory()); 
       country.setArea(((Ezomart) ListAdapter.this.mStringFilterList.get(i)).getArea()); 
       country.setThumbnailUrl(((Ezomart) ListAdapter.this.mStringFilterList.get(i)).getThumbnailUrl()); 
       country.setNumber(((Ezomart) ListAdapter.this.mStringFilterList.get(i)).getNumber()); 
       filterList.add(country); 
      } 
     } 
     results.count = filterList.size(); 
     results.values = filterList; 
    } 
    return results; 
} 

protected void publishResults(CharSequence charSequence, FilterResults filterResults) { 
    ListAdapter.this.ezoItems = (List<Ezomart>) filterResults.values; 
    if (filterResults.count > 0) { 
     notifyDataSetChanged(); 
    } else { 
     notifyDataSetInvalidated(); 
    } 
} 
+0

не знаю я. Он автоматически должен вызывать результаты публикации, когда мы реализуем фильтрацию. – Srikanth86in

+0

Каково ваше имя класса, в котором этот код предоставляется? Попробуйте изменить 'notifyDataSetChanged()' на 'ClassName.this.notifyDataSetChanged()' – jensbrulmans

+0

Также не следует ли переопределять 'publishResults()'? ('@ Override') – jensbrulmans

ответ

-1

Я нашел ответ, перейдя по ссылке ниже. Благодаря MBH.

Мне пришлось добавить этот код в свой фрагмент.

@Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     // What i have added is this 
     setHasOptionsMenu(true); 
    } 

Для справки, пожалуйста, пройдите по ссылке:

Android search with Fragments

+1

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259) чтобы включить здесь основные части ответа и предоставить ссылку для справки. –

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