我知道这不是一个新问题,已经有很多类似的问题,但我的问题有点不同。我正在尝试在ListView上实现搜索功能。我有一个listview如下:
ListView list;
List<HashMap<String, String>> myDataCollection;
我正在从XML中读取大量数据并从中创建。
BinderMyrData bindingData = new BinderMyData(this, myDataCollection);
list = (ListView) findViewById(R.id.list);
// Adding items to listview
inputSearch = (EditText) findViewById(R.id.inputSearch);
list.setAdapter(bindingData);
/*** Enabling Search Filter * */
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2,
int arg3) {
// When user changed the Text
//Some code to be added no clue..
}
@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
}
});
我知道我必须在onTextChanged中添加一些代码。我不知道代码是什么......非常感谢任何帮助。
答案 0 :(得分:0)
您是否阅读了this主题?
它完全解释了如何将搜索功能应用于ListView。
长话短说:
在 bindingData.getFilter().filter(cs);
方法中添加 onTextChanged()
但是,如果您使用标准ArrayAdapter<E>
,那么这是最方便的方法,并且您正在使用某种奇怪的List<HashMap<String, String>> myDataCollection;
适配器作为散列映射列表。如果这不起作用,您应该考虑将适配器更改为更友好的适配器,例如ArrayAdapter<E>
。