package be.digitalia.fosdem.fragments; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.Fragment; 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.adapters.EventsAdapter; public abstract class BaseLiveListFragment extends RecyclerViewFragment implements LoaderCallbacks<Cursor> { private static final int EVENTS_LOADER_ID = 1; private EventsAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); adapter = new EventsAdapter(getActivity(), false); } @Override protected void onRecyclerViewCreated(RecyclerView recyclerView, Bundle savedInstanceState) { Fragment parentFragment = getParentFragment(); if (parentFragment instanceof RecycledViewPoolProvider) { recyclerView.setRecycledViewPool(((RecycledViewPoolProvider) parentFragment).getRecycledViewPool()); } 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(getEmptyText()); setProgressBarVisible(true); getLoaderManager().initLoader(EVENTS_LOADER_ID, null, this); } protected abstract String getEmptyText(); @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); } }