RSS Readerアプリ作成2日目
今回は前回途中まで作成したRSS Readerの続きを作成してみます。
記事は以下
Androidで広がる、携帯アプリ開発の世界 - 第5回 RSSリーダーの要、パース機能を知る:ITpro
とりあえずRssParserTask.javaを作成していきます。
package jp.hatenadiary.amatuka.simplerssreader; import java.io.IOException; import java.io.InputStream; import java.net.URL; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.app.ProgressDialog; import android.os.AsyncTask; import android.util.Xml; public class RssParserTask extends AsyncTask<String, Integer, RssListAdapter> { private RssReaderActivity mActivity; private RssListAdapter mAdapter; private ProgressDialog mProgressDialog; public RssParserTask(RssReaderActivity activity, RssListAdapter adapter) { mActivity = activity; mAdapter = adapter; } @Override protected void onPreExecute() { mProgressDialog = new ProgressDialog(mActivity); mProgressDialog.setMessage("Now Loading..."); mProgressDialog.show(); } @Override protected RssListAdapter doInBackground(String... params) { RssListAdapter result = null; try { URL url = new URL(params[0]); InputStream is = url.openConnection().getInputStream(); result = parseXml(is); } catch (Exception e) { e.printStackTrace(); } return result; } @Override protected void onPostExecute(RssListAdapter result) { mProgressDialog.dismiss(); mActivity.setListAdapter(result); } public RssListAdapter parseXml(InputStream is) throws IOException, XmlPullParserException { XmlPullParser parser = Xml.newPullParser(); try { parser.setInput(is, null); int eventType = parser.getEventType(); Item currentItem = null; while (eventType != XmlPullParser.END_DOCUMENT) { String tag = null; switch (eventType) { case XmlPullParser.START_TAG: tag = parser.getName(); if (tag.equals("item")) { currentItem = new Item(); } else if (currentItem != null) { if (tag.equals("title")){ currentItem.setTitle(parser.nextText()); } else if (tag.equals("description")) { currentItem.setDescription(parser.nextText()); } } break; case XmlPullParser.END_TAG: tag = parser.getName(); if (tag.equals("item")) { mAdapter.add(currentItem); } break; } eventType = parser.next(); } } catch (Exception e) { e.printStackTrace(); } return mAdapter; } }
RssReaderActivity.javaも以下のように追加する。
package jp.hatenadiary.amatuka.simplerssreader; import java.util.ArrayList; import android.os.Bundle; import android.app.ListActivity; public class RssReaderActivity extends ListActivity { public static final String RSS_FEED_URL = "http://itpro.nikkeibp.co.jp/rss/ITpro.rdf"; //追加 private ArrayList<Item> mItems; private RssListAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rss_reader); mItems = new ArrayList<Item>(); mAdapter = new RssListAdapter(this, mItems); RssParserTask task = new RssParserTask(this, mAdapter); //追加 task.execute(RSS_FEED_URL);//追加 } }
上記のように入力してみたのですがちゃんと動いてくれません(´・ω・`)
明日は動くようにがんばります(・ω<)