【发布时间】:2020-03-10 08:27:32
【问题描述】:
我尝试了这段代码,但没有返回我输入的文本。 这是我的 Addtocartitems.java :
这是我的 Downloadeditems.java :
这是我的 DownloadedListAdapter2.java :
这个程序没有错误,但什么也没发生。 有人可以帮我吗?提前致谢!
【问题讨论】:
标签: java android search toolbar
我尝试了这段代码,但没有返回我输入的文本。 这是我的 Addtocartitems.java :
这是我的 Downloadeditems.java :
这是我的 DownloadedListAdapter2.java :
这个程序没有错误,但什么也没发生。 有人可以帮我吗?提前致谢!
【问题讨论】:
标签: java android search toolbar
在适配器类中创建列表变量
List<DownloadedItems> downloadedItemsList= new ArrayList<>();
在你的构造函数中,请调用写下这个
public DownloadListAdapter(Context context, int resource, ArrayList<DownloadedItems> object){
super(context,resource,object);
this.mcontext= context;
this.mResource=resource;
this.downloadedItemsList= object;
}
在适配器中创建获取列表的方法
public void setData(List<DownloadedItems> modelList) {
this.downloadedItemsList= modelList;
notifyDataSetChanged();
}
现在使用新的过滤列表调用过滤方法并将该列表传递给适配器方法
private void filter(String text) {
List<DownloadedItems> filteredList = new ArrayList<DownloadedItems>();
for (DownloadedItems la :langList) {
if (la.langName.toLowerCase().startsWith(text.toLowerCase())) {
filteredList.add(la);
}
adapter.setData(filteredList);
}
}
您可以根据需要将方法 .startsWith 更改为 .Contains。此方法返回以输入的字符串开头的项目。 langList 是我已经传递给适配器以呈现的初始列表。
la.langName.toLowerCase().startsWith
这是过滤器查询,我用来比较过滤器的项目。我正在从列表中搜索语言名称。所以你可以根据你的要求进行修改。并从
调用方法过滤器 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText)
return true;
}
});
【讨论】: