/** * */ package jp.mydns.sys1yagi.android.jsonpullparsersample; import jp.mydns.sys1yagi.android.jsonpullparsersample.model.RSS; import jp.mydns.sys1yagi.android.jsonpullparsersample.model.YahooPipeJsonGen; import net.vvakame.util.jsonpullparser.util.OnJsonObjectAddListener; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; public class RSSLoaderFragment extends ListFragment { private ArrayAdapter<RSS> mAdapter; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View view, int pos, long id) { RSS rss = (RSS) adapter.getItemAtPosition(pos); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(rss.getLink())); startActivity(intent); } }); new AsyncTask<String, RSS, Void>() { @Override protected Void doInBackground(String... params) { String url = params[0]; try { YahooPipeJsonGen.get( getActivity().getAssets().open("json.txt"), new OnJsonObjectAddListener() { // YahooPipeJsonGen.get(new // URL(url).openStream(), new // OnJsonObjectAddListener() { @Override public void onAdd(Object obj) { if (obj instanceof RSS) { publishProgress((RSS) obj); } } }); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onProgressUpdate(RSS... values) { if (mAdapter == null) { mAdapter = new ArrayAdapter<RSS>(getActivity(), R.layout.list_item, R.id.text); setListAdapter(mAdapter); } for (RSS rss : values) { mAdapter.add(rss); mAdapter.notifyDataSetChanged(); } } }.execute("http://pipes.yahoo.com/pipes/pipe.run?_id=DJEg41Ac3BG8IAI2E5PZnA&_render=json&url=http%3a%2f%2fb%2ehatena%2ene%2ejp%2fentrylist%3fsort%3dhot%26threshold%3d100%26mode%3drss"); } }