我想根据itemName获取包含搜索输入的所有项目。在c#中,我可以使用lambda,但我找不到任何关于android的引用。
这是模型类:
public class ModelItem {
public long itemId;
public String itemName;
public double price;
}
这是我的清单:
public static ArrayList<ModelItem> items;
我将使用该列表来获取项目。提前谢谢。
答案 0 :(得分:2)
使用以下代码
public void getAllItems(ArrayList<ModelItem> items, String searchItem) {
for(ModelItem item : items) {
if(item.getItemName().contains(searchItem)) {
// here you are getting item which matches inside your list
}
}
答案 1 :(得分:2)
首先,将项目复制到tempList
private ArrayList<ModelItem> items; // You have data into this list
private ArrayList<ModelItem> tempData = new ArrayList<>();
for (ModelItem item : items) {
tempData.add(item);
}
这是根据查询过滤项目
public void filter(String query) {
items.clear();
if (query.length() > 0) {
for (ModelItem currItem : tempData) {
// Add data into list, if item is having query string
if (currItem.getItemName().toLowerCase().contains(query)) {
mData.add(currItem);
}
}
} else {
// Adding all the items, if query is empty
for (ModelItem item : tempData) {
items.add(item);
}
}
notifyDataSetChanged(); // notify the changes, if you are using an adapter.
}
答案 2 :(得分:2)
我认为你有一个包含项目的列表视图。现在你想用搜索字符串过滤它们。
您必须在自定义适配器中实施可过滤。 How to filter an adapter
答案 3 :(得分:1)
嘿我在github中得到了一个例子,你需要在主类中使用QueryTextListener,然后在示例中给出setFilter到adapter 请查看此链接:https://github.com/Wrdlbrnft/Searchable-RecyclerView-Demo