我有一个包含产品的列表视图。我重写了产品的tostring方法:
@Override
public String toString() {
return this.getNaam();
}
我将addTextChangedListener
添加到EditText
。
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个产品。< / p>
我没有覆盖适配器中的getFilter()
方法。
如何展示正确的产品? (我正在使用ArrayAdapter
)
答案 0 :(得分: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
}