2012-03-14 25 views
0

我有一個包含產品的列表視圖。我覆蓋了產品的toString方法:帶有edittext的Android篩選器列表視圖

@Override 
    public String toString() { 
     return this.getNaam(); 
    } 

我添加addTextChangedListenerEditText

tvZoek.addTextChangedListener(new TextWatcher() {    
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      adapter.getFilter().filter(s.toString().toLowerCase());    
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
     } 
     public void afterTextChanged(Editable s) { 
     } 
}); 

當我搜索時,列表被過濾。但是,例如,如果我搜索「Bio」,並且列表中有5個產品的名稱中包含「Bio」,那麼它將顯示列表中的前5個產品,而不是名稱中包含「Bio」的5個產品。

我沒有覆蓋適配器中的getFilter()方法。

如何顯示正確的產品? (我正在與ArrayAdapter工作)

回答

1

請嘗試以下操作。

public void onTextChanged(CharSequence s, int start, int before, int count) { 
        updateList(s.toString);    
       } 


public void updateList(String filter) { 

List<> tempList = new ArrayLsit<>(); 

int yourListSize = myList.count(); 
for (int i = 0; i < myListSize; i++) { 
if (filter != null) { 
    if (myList.get(i).contains(filter)) { 
    tempList.add(myList.get(i)); 
    } 
} 
} 

// create adapter using tempList 
// setAdapter 

}

+0

這工作,但它的檸慢 – 2012-03-14 12:01:02

+0

在調試模式下它的速度慢,當我運行它,通常它的好。所以謝謝。如果沒有人提供其他解決方案,我會在幾天內將您的答案標記爲已接受:)謝謝 – 2012-03-14 13:10:42