Я новичок! пользователь, я пытаюсь отфильтровать свои данные с помощью Search View. Фильтрация, похоже, работает, но когда я удаляю текст в окне поиска, чтобы ввести другой, у меня есть только найденный элемент, а не мой первоначальный список.Я не могу сбрасывать свой первоначальный список, когда удаляю поисковый запрос в Search View в Android
Более аналитический я использую следующий адаптер:
public void filterData(String query){
query = query.toLowerCase();
if(query.isEmpty()){
expListTitle .addAll(InitialList);
}
else {
expListTitle.clear();
for(String titles: NewexpListTitle)
{
if(titles.toLowerCase().contains(query))
{
expListTitle.add(titles);
}
}
}
notifyDataSetChanged();
}
и в конструкторе адаптера я делаю следующее:
public CustomExpandableListAdapter(Context context, List<String> expListTitle, LinkedHashMap<String,ArrayList<Business>> expListDetail)
{
this.context = context;
this.expListTitle = expListTitle;
this.expListDetail = expListDetail;
this.NewexpListTitle= new ArrayList<String>();
this.NewexpListTitle.addAll(expListTitle);
this.InitialList = new ArrayList<String>();
this.InitialList.addAll(expListTitle);
}
И на моем классе я дал следующий который называют FilterData метод
@Override
public boolean onQueryTextChange(String query) {
listAdapter = new CustomExpandableListAdapter(getApplicationContext(), FinalListTitle, FinalMap);
listAdapter.filterData(query);
expandableListView.setAdapter(listAdapter);
return false;
}
У меня выше setAdapter и инициализация becaus e поступают с объекта JSON с использованием volley
Похоже, что при очистке SearchView список InitialList также очищается, а его левый с найденным элементом. Как сохранить мой первоначальный список тем временем?
Спасибо
см ссылку [это] (http://stackoverflow.com/a/24771174/6005977). Это поможет вам –
Почему вы создаете новый адаптер каждый раз, когда изменяется запрос? Создайте только один и обновите его модель onQueryTextChange –
@omar, потому что данные поступают с объекта JSON с использованием волейбола – NoviceUser