package org.onebrick.android.fragments; import android.database.Cursor; import android.os.Bundle; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.text.TextUtils; import com.activeandroid.content.ContentProvider; import org.onebrick.android.core.OneBrickRESTClient; import org.onebrick.android.models.Event; import java.util.ArrayList; import java.util.List; public class SearchResultsFragment extends EventsListFragment { private static final String ARG_CHAPTER_NAME = "chapter_name"; private static final String ARG_CHAPTER_ID = "chapter_id"; private static final String ARG_SEARCH_QUERY = "search"; public static SearchResultsFragment newInstance(String chapterName, int chapterId, String searchQuery) { SearchResultsFragment fragment = new SearchResultsFragment(); Bundle args = new Bundle(); args.putString(ARG_CHAPTER_NAME, chapterName); args.putInt(ARG_CHAPTER_ID, chapterId); args.putString(ARG_SEARCH_QUERY, searchQuery); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Bundle args = getArguments(); if (args != null) { chapterName = args.getString(ARG_CHAPTER_NAME); chapterId = args.getInt(ARG_CHAPTER_ID); searchQuery = args.getString(ARG_SEARCH_QUERY); } populateSearchResultsList(chapterId, searchQuery); } private void populateSearchResultsList(final int chapterId, final String searchQuery) { OneBrickRESTClient.getInstance().requestEvents(chapterId, searchQuery); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle bundle) { final String[] projection = null; StringBuilder selection = new StringBuilder(); selection.append(Event.CHAPTER_ID + "=? "); List<String> args = new ArrayList<>(); args.add(Integer.toString(chapterId)); if (!TextUtils.isEmpty(searchQuery)){ // query setting selection.append(" and "); selection.append(Event.EVENT_TITLE + " like ? "); selection.append(" or "); selection.append(Event.EVENT_SUMMARY + " like ? "); // parameter setting args.add("%" + searchQuery + "%"); args.add("%" + searchQuery + "%"); } final String sortOrder = Event.START_DATE + " ASC"; String[] selectionArgs = args.toArray(new String[args.size()]); return new CursorLoader(getActivity(), ContentProvider.createUri(Event.class, null), projection, selection.toString(), selectionArgs, sortOrder); } }