private void setUpAdapter() { Cursor cursor1 = getActivity() .getContentResolver() .query(Card.CONTENT_URI, Card.projection, null, null, Card.CODE); // Cursor cursor2 = getActivity().getContentResolver().query(Card.CONTENT_URI, Card.projection, // Card.CODE + " IS NULL", null, null); // Cursor [] cursors = new Cursor [] {cursor1, cursor2}; // MergeCursor merge = new MergeCursor(cursors); getActivity().startManagingCursor(cursor1); // the desired columns to be bound String[] columns = new String[] {Card.NAME, Card.DESCRIPTION}; int[] to = new int[] {R.id.name_entry, R.id.number_entry}; // create the adapter using the cursor pointing to the desired data as well as the layout // information mAdapter = new CompanyCursorAdapter(getActivity(), R.layout.list_example_entry, cursor1, columns, to); // set this adapter as your ListActivity's adapter this.setListAdapter(mAdapter); mAdapter.setCursorToStringConverter( new CursorToStringConverter() { public String convertToString(android.database.Cursor cursor) { // Get the label for this row out of the "state" column final int columnIndex = cursor.getColumnIndexOrThrow("name"); final String str = cursor.getString(columnIndex); Log.d(TAG, "string filter + " + str); return str; } }); mAdapter.setFilterQueryProvider( new FilterQueryProvider() { public Cursor runQuery(CharSequence constraint) { // Search for states whose names begin with the specified letters. String con = constraint.toString(); Log.d(TAG, "constraint + " + con); Cursor cursor = getActivity() .getContentResolver() .query( Card.CONTENT_URI, Card.projection, Card.NAME + " LIKE ?", new String[] {con + "%"}, null); getActivity().startManagingCursor(cursor); if (cursor.getCount() < 1) { Log.d(TAG, "filtering cursor is empty "); } else { cursor.moveToFirst(); Log.d(TAG, "filtering cursor = " + cursor.getString(cursor.getColumnIndex("name"))); } return cursor; } }); }
public void onTextChanged(CharSequence s, int start, int before, int count) { Log.d(TAG, "filtering + " + s); Filter filter = mAdapter.getFilter(); filter.filter(s); }