我正在尝试向我的Listview添加搜索功能,该功能由Cursor Adapter支持。我的搜索位于包含此列表视图的片段内。我正在关注Here的教程。但它似乎没有起作用。以前我使用自动完成编辑文本在此列表上实现了搜索,并且使用以下代码工作正常:
SEARCH.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
CursorAdapter filterAdapter = (CursorAdapter) Cur;
filterAdapter.getFilter().filter(s.toString());
}
});
Cur.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return dbHelper.getDirectoryList(constraint);
}
});
现在我的代码如下(在这个特定片段内):
班级宣言:
public class FragmentTab1 extends Fragment implements OnQueryTextListener{
我的OnCreateOptionsMenu:
public boolean onCreateOptionsMenu(Menu menu) {
getActivity().getMenuInflater().inflate(R.menu.main, menu);
SearchManager searchManager = (SearchManager) getActivity().getSystemService( Context.SEARCH_SERVICE );
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(this);
return true;
}
我的onQueryTextSubmit:
@Override
public boolean onQueryTextChange(String newText){
// this is your adapter that will be filtered
if (TextUtils.isEmpty(newText)){
lv.clearTextFilter();
}
else{
lv.setFilterText(newText.toString());
}
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
return false;
}
然而,这似乎没有用,我在这里缺少什么?