2

Situation

I have data coming from a SQLite DataProvider on the phone. My fragment extends ListFragment and implements LoaderManager.LoaderCallbacks<Cursor>. I am looking to have a SearchView widget to allow filtering of the ListView. In onActivityCreated, I am using SimpleCursorAdapter to find columns to my own xml layout. In onCreateLoader, I am using CursorLoader.

There are two approaches I can think of based on research.

Filter approach

I can get a filter from the adatper. My code:

Fragment frag = getView().findViewByTag(....);
Filter f = ((SimpleCursorAdapter) frag.getListView().getAdapter()).getFilter();
f.filter(<searchText>);

However the above code does nothing.

Re-launch loader with selection args

Relaunch the loader with right search texts, as stated here

Bundle args = new Bundle();
args.putString(SEARCH_TERM, text);
getLoaderManager().restartLoader(0, args, this);

Above seems to work.

The question is: is this by design that filter does not work with SimpleCursorAdapter? How should Filter interface be used?

It seems like I am just re-inventing the wheel of the Filter design.

4

0 回答 0