package com.gh4a.fragment; import android.content.ContentUris; import android.content.DialogInterface; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v7.app.AlertDialog; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import com.gh4a.BrowseFilter; import com.gh4a.R; import com.gh4a.adapter.BookmarkAdapter; import com.gh4a.db.BookmarksProvider; public class BookmarkListFragment extends LoadingListFragmentBase implements LoaderManager.LoaderCallbacks<Cursor>, BookmarkAdapter.OnItemClickListener { public static BookmarkListFragment newInstance() { return new BookmarkListFragment(); } private BookmarkAdapter mAdapter; @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setContentShown(false); getLoaderManager().initLoader(0, null, this); } @Override protected void onRecyclerViewInflated(RecyclerView view, LayoutInflater inflater) { super.onRecyclerViewInflated(view, inflater); mAdapter = new BookmarkAdapter(getActivity(), this); view.setAdapter(mAdapter); updateEmptyState(); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { return new CursorLoader(getActivity(), BookmarksProvider.Columns.CONTENT_URI, null, null, null, null); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { mAdapter.swapCursor(data); setContentShown(true); updateEmptyState(); } @Override public void onLoaderReset(Loader<Cursor> loader) { mAdapter.swapCursor(null); updateEmptyState(); } @Override public void onRefresh() { hideContentAndRestartLoaders(0); } @Override protected int getEmptyTextResId() { return R.string.no_bookmarks; } @Override public void onItemClick(long id, String url) { startActivity(BrowseFilter.makeRedirectionIntent(getActivity(), Uri.parse(url), null)); } @Override public void onItemLongClick(final long id) { new AlertDialog.Builder(getActivity()) .setMessage(R.string.remove_bookmark_confirm) .setIconAttribute(android.R.attr.alertDialogIcon) .setCancelable(false) .setPositiveButton(getString(R.string.remove), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Uri uri = ContentUris.withAppendedId(BookmarksProvider.Columns.CONTENT_URI, id); getActivity().getContentResolver().delete(uri, null, null); } }) .setNegativeButton(getString(R.string.cancel), null) .show(); } }