package be.digitalia.fosdem.fragments;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import be.digitalia.fosdem.R;
import be.digitalia.fosdem.adapters.EventsAdapter;
import be.digitalia.fosdem.db.DatabaseManager;
import be.digitalia.fosdem.loaders.SimpleCursorLoader;
public class SearchResultListFragment extends RecyclerViewFragment implements LoaderCallbacks<Cursor> {
private static final int EVENTS_LOADER_ID = 1;
private static final String ARG_QUERY = "query";
private EventsAdapter adapter;
public static SearchResultListFragment newInstance(String query) {
SearchResultListFragment f = new SearchResultListFragment();
Bundle args = new Bundle();
args.putString(ARG_QUERY, query);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new EventsAdapter(getActivity());
}
@Override
protected void onRecyclerViewCreated(RecyclerView recyclerView, Bundle savedInstanceState) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));
recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL));
recyclerView.setAdapter(adapter);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setEmptyText(getString(R.string.no_search_result));
setProgressBarVisible(true);
getLoaderManager().initLoader(EVENTS_LOADER_ID, null, this);
}
private static class TextSearchLoader extends SimpleCursorLoader {
private final String query;
public TextSearchLoader(Context context, String query) {
super(context);
this.query = query;
}
@Override
protected Cursor getCursor() {
return DatabaseManager.getInstance().getSearchResults(query);
}
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String query = getArguments().getString(ARG_QUERY);
return new TextSearchLoader(getActivity(), query);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (data != null) {
adapter.swapCursor(data);
}
setProgressBarVisible(false);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
}