2012-03-14 17 views
0

私はそれに含まれる製品のリストビューを持っています。Androidフィルターリストビューとedittext

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

は私EditTextaddTextChangedListenerを追加します。私は、製品のtoStringメソッドをオーバーライドします。

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つのプロダクトがある場合、そのリストに最初の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

これは動作しますが、それは、私はそれは良いことだ、通常はそれを実行したとき、それは、遅いのデバッグモードでは –

+0

verry遅いです。ありがとう。誰も他の解決策を提示しなければ、私は数日後にあなたの答えを受け入れるようにします:)ありがとう –