搜索ArrayList模型

时间:2017-04-18 12:44:22

标签: java android

我想根据itemName获取包含搜索输入的所有项目。在c#中,我可以使用lambda,但我找不到任何关于android的引用。

这是模型类:

public class ModelItem {
    public long itemId;
    public String itemName;
    public double price;
}

这是我的清单:

public static ArrayList<ModelItem> items;

我将使用该列表来获取项目。提前谢谢。

4 个答案:

答案 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