我有一个列表视图,它使用列表适配器作为适配器来填充列表视图。我在网上研究了一种添加搜索的方法,但所有这些都使用了ArrayAdapters。由于我使用列表适配器,函数getFilter()
不起作用。这是我的代码
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
有人可以帮助我找到另一种方法,以便以一种简单的方式做到这一点吗?
答案 0 :(得分:0)
在适配器中创建一个函数,如下所示:
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
objectList.clear();
if (charText.length() == 0) {
objectList.addAll(objectAsArraylist);
} else {
for (Object v : objectAsArraylist) {
objectList.add(v);
}
}
notifyDataSetChanged();
}
其中objectList
是您传递给适配器的列表,objectAsArraylist
是传递给arraylist的objectList
。
然后,您可以在onTextChanged
上调用此方法:
adapter.filter(text)