-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