package jp.mydns.sys1yagi.android.jsoupsample; import jp.mydns.sys1yagi.android.jsoupsample.RssList.Feed; import jp.mydns.sys1yagi.android.jsoupsample.RssList.Item; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.Loader; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; public class RssFragment extends ListFragment implements LoaderCallbacks<RssList> { private final static String TAG = RssFragment.class.getSimpleName(); public static final String RSS_FEED = "rss_feed"; private RssList mRssList; public static RssFragment newInstance(Feed feed) { RssFragment fragment = new RssFragment(); Bundle args = new Bundle(); args.putSerializable(RssFragment.RSS_FEED, feed); fragment.setArguments(args); return fragment; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); LoaderManager manager = this.getLoaderManager(); manager.initLoader(0, getArguments(), this); } @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume"); } @Override public void onPause() { super.onPause(); } @Override public Loader<RssList> onCreateLoader(int id, Bundle bundle) { Log.d(TAG, "onCreateLoader"); return new RssLoader(getActivity(), (Feed) bundle.getSerializable(RSS_FEED)); } @Override public void onLoaderReset(Loader<RssList> loader) { } @Override public void onLoadFinished(Loader<RssList> loader, RssList result) { mRssList = result; ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1); for (Item item : result.mItems) { adapter.add(item.title); } getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View view, int pos, long id) { if (mRssList != null && mRssList.mItems.size() > pos) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(mRssList.mItems.get(pos).url)); startActivity(intent); } } }); setListAdapter(adapter); } }