-1
我有一个ArrayList的对象。每当用户输入一个searchView时,我都会使用这个方法,这就是filterBy的功能。变量byName是一个布尔值,用于确定我们是通过名称还是代码进行搜索。我的错误是:通过ArrayList搜索时的错误
- 我使用关键字“苜蓿”测试它,但它返回每次我输入一个字母(我做数据库本身同样的事情检查)额外的项目。
- 如果我在searchView中有文本时单击开关(更改byName布尔值),它将继续移除项目,直到没有任何内容。
- 在searchView中删除文本将继续删除文本(这一个让我感到困惑,因为它只是在这个方法中设置了删除项目的列表)。
有什么想法是什么导致了这个?
private void displayProducts() {
final Querier querier = new Querier(this);
ProductListAdapter productListAdapter;
if (filterBy.equals("")) {
products = querier.getProductsListing();
productListAdapter = new ProductListAdapter(this, products.getProductsList(), byName);
} else {
Products ps = products;
for (int i = 0; i < products.getProductsList().size(); i++) {
final Product prod = ps.getProductsList().get(i);
if (byName) {
if (!prod.getProductName().toLowerCase().contains(filterBy))
ps.getProductsList().remove(prod);
} else if (!prod.getOrderCode().toLowerCase().contains(filterBy))
ps.getProductsList().remove(prod);
}
Log.v("removed some junk, now there are", String.valueOf(ps.getProductsList().size()));
productListAdapter = new ProductListAdapter(this, ps.getProductsList(), byName);
}
productsLinearLayout.setAdapter(productListAdapter);
}
迭代和从一个'集合'同时从一个基于循环的索引中删除从不是一个好主意 – Blackbelt