RecyclerView在搜索时不动态更新



我有一个包含航班信息的回收者视图,并且我正在使用搜索栏上的航班号进行搜索。当我搜索时,循环视图动态更新,因为逻辑在我的过滤函数中,但是当我清除搜索时,循环视图完全为空。我如何解决这个问题?

搜索过滤函数

private void filter(String text) {
ArrayList<FlightItem> filteredList = new ArrayList<>();
for(FlightItem item : flightItems) {
if(item.getFlightNumber().toLowerCase().contains(text.toLowerCase())){
filteredList.add(item);
}
}
mAdapter.filterList(filteredList);
flightItems.clear();
flightItems.addAll(filteredList);
}
}

保留flightItems的副本,因为在添加过滤项之前要清除它

ArrayList<FlightItem> flightItems = new ArrayList<>();
ArrayList<FlightItem> flightItemsCopy = new ArrayList<>();
private void filter(String text) {
if(text.trim() == ""){
clearSearch()
return
}
ArrayList<FlightItem> filteredList = new ArrayList<>();
for(FlightItem item : flightItems) {
if(item.getFlightNumber().toLowerCase().contains(text.toLowerCase())){
filteredList.add(item);
}
}
flightItemsCopy.clear(); //clear copy
flightItemsCopy.addAll(flightItems); // make a copy here
mAdapter.filterList(filteredList);
flightItems.clear();
flightItems.addAll(filteredList);
}
}
private void clearSearch(){
flightItems.clear();
flightItems.addAll(flightItemsCopy);
mAdapter.notifyDataSetChanged();
}
void filter(String text){
List<DataHolder> temp = new ArrayList();
for(DataHolder d: displayedList){
//or use .equal(text) with you want equal match
//use .toLowerCase() for better matches
if(d.getEnglish().contains(text)){
temp.add(d);
}
}
//update recyclerview
disp_adapter.updateList(temp);

}

updateList method:

public void updateList(List<DataHolder> list){
displayedList = list;
notifyDataSetChanged();

}

相关内容

  • 没有找到相关文章

最新更新