android - 为什么在搜索框中输入任何内容时不显示项目?
问题描述
这些项目一直显示,直到我在 SearchView 中键入任何内容,然后项目消失。
当我输入任何内容时,fullOffers 的大小似乎变为零;因为当我放入 toast 消息时,当我将它放入 for 循环时它没有出现。
我在 RecyclerView 的适配器中添加了 getFilter 方法,并将其与片段中的 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();
}
};
}
我希望这些项目被加载到“优惠”列表中并出现
解决方案
尝试像这样更改 publishResults 方法:
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
offers=(List) results.values;
notifyDataSetChanged();
}
推荐阅读
- laravel - Laravel: public function index() {return User::all;} 不显示数据
- asp.net - 未识别 Web 方法
- node.js - 检查内部地图并在Nodejs中查找函数后创建错误
- c# - 如何将 MainWindow.xaml 中的 8 个复选框绑定到 ViewModel 的字节属性的每一位?
- react-native - react-native-admob 在 iOS 中运行良好,但在 Android 中无法运行
- ansible - 如何使用 ansible 安装特定版本的 brew cask formula?
- apache-spark - Spark Standalone如何将本地.jar文件传递给集群
- java - 当只有 Java 11 JRE 可用时运行 Java 8 jar
- iframe - 嵌入式 iframe 上的 umap tilelayer 未显示在移动设备上
- r - 无法在 R 中创建矩阵