package com.gh4a.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.content.Loader; import android.support.v7.widget.RecyclerView; import com.gh4a.R; import com.gh4a.activities.WikiActivity; import com.gh4a.adapter.CommonFeedAdapter; import com.gh4a.adapter.RootAdapter; import com.gh4a.holder.Feed; import com.gh4a.loader.FeedLoader; import com.gh4a.loader.LoaderResult; import org.xml.sax.SAXException; import java.io.FileNotFoundException; import java.util.List; public class WikiListFragment extends ListDataBaseFragment<Feed> implements RootAdapter.OnItemClickListener<Feed> { private String mUserLogin; private String mRepoName; private String mInitialPage; private CommonFeedAdapter mAdapter; public static WikiListFragment newInstance(String owner, String repo, String initialPage) { WikiListFragment f = new WikiListFragment(); Bundle args = new Bundle(); args.putString("owner", owner); args.putString("repo", repo); args.putString("initial_page", initialPage); f.setArguments(args); return f; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUserLogin = getArguments().getString("owner"); mRepoName = getArguments().getString("repo"); mInitialPage = getArguments().getString("initial_page"); getArguments().remove("initial_page"); } @Override protected Loader<LoaderResult<List<Feed>>> onCreateLoader() { String url = "https://github.com/" + mUserLogin + "/" + mRepoName + "/wiki.atom"; return new FeedLoader(getActivity(), url); } @Override protected boolean onLoaderError(Exception e) { if (e instanceof SAXException || e instanceof FileNotFoundException) { mAdapter.clear(); updateEmptyState(); setContentShown(true); return true; } return false; } @Override protected RootAdapter<Feed, ? extends RecyclerView.ViewHolder> onCreateAdapter() { mAdapter = new CommonFeedAdapter(getActivity(), false); mAdapter.setOnItemClickListener(this); return mAdapter; } @Override protected int getEmptyTextResId() { return R.string.no_wiki_updates_found; } @Override public void onItemClick(Feed feed) { openViewer(feed); } @Override protected void onAddData(RootAdapter<Feed, ?> adapter, List<Feed> data) { super.onAddData(adapter, data); if (mInitialPage != null) { for (Feed feed : data) { if (mInitialPage.equals(feed.getId())) { openViewer(feed); break; } } mInitialPage = null; } } private void openViewer(Feed feed) { startActivity(WikiActivity.makeIntent(getActivity(), mUserLogin, mRepoName, feed)); } }