【发布时间】:2019-07-09 15:13:56
【问题描述】:
项目会一直显示,直到我在 SearchView 中输入任何内容,然后项目才会消失。
当我输入任何内容时,fullOffers 的大小似乎变为零;因为当我把 toast 消息放在 for 循环中时它没有出现。
我在 RecyclerView 的适配器中添加了 getFilter 方法,并将它与 Fragemnt 中的 SearchView 链接起来。
public class OffersAdapter extends RecyclerView.Adapter<OffersAdapter.ViewHolder> implements Filterable{
Context context;
List<offer> offers;
List<offer> fullOffers;
public OffersAdapter(List Offers,Context mContext){
context = mContext;
offers = Offers;
fullOffers = new ArrayList<>(Offers);
}
public Filter getFilter() {
return exampleFilter;
}
private Filter exampleFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
ArrayList<offer> filteredList = new ArrayList<>();
if (constraint == null || constraint.length() == 0) {
filteredList.addAll(offers);
} else {
String filterPattern = constraint.toString().toLowerCase().trim();
Toast.makeText(context,"item added",Toast.LENGTH_LONG).show(); // the toast message appears
for (offer item : fullOffers) {
Toast.makeText(context,"item added",Toast.LENGTH_LONG).show(); // it doesn't appear
if (item.getTitle().toLowerCase().contains(filterPattern)) {
filteredList.add(item);
}
}
}
FilterResults results = new FilterResults();
results.values = filteredList;
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
offers.clear();
offers.addAll((List) results.values);
notifyDataSetChanged();
}
};
}
我希望项目被加载到“优惠”列表中并出现
【问题讨论】:
-
感谢 T001 的编辑
标签: android search filter get fragment