我有一个对象的ArrayList。每当用户键入searchView时,我都会使用此方法,这就是filterBy。变量byName是一个布尔值,用于确定我们是按名称还是代码进行搜索。我的错误是:
有关导致此问题的任何想法?
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);
}
答案 0 :(得分:0)
如果这对其他人有帮助的话,我就是这样修理的。
private void displayProducts() {
final Querier querier = new Querier(this);
ProductListAdapter productListAdapter;
products = querier.getProductsListing();
if (filterBy.equals(""))
productListAdapter = new ProductListAdapter(this, products.getProductsList(), byName);
else {
ArrayList<Product> ps = new ArrayList<>(products.getProductsList());
for (Product p : products.getProductsList()) {
if (byName) {
if (!p.getProductName().toLowerCase().contains(filterBy))
ps.remove(p);
} else {
if (!p.getOrderCode().toLowerCase().contains(filterBy))
ps.remove(p);
}
}
Log.v("removed some junk, now there are", String.valueOf(ps.size()));
productListAdapter = new ProductListAdapter(this, ps, byName);
}
productsLinearLayout.setAdapter(productListAdapter);
}