package jp.mydns.sys1yagi.android.dom4jsample;
import java.util.List;
import jp.mydns.sys1yagi.android.dom4jsample.RssList.Feed;
import jp.mydns.sys1yagi.android.dom4jsample.RssList.Item;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
import android.util.Log;
class RssLoader extends AsyncTaskLoader<RssList> {
private final static String TAG = RssLoader.class.getSimpleName();
private Feed mFeed;
private RssList mList;
public RssLoader(Context context, Feed feed) {
super(context);
mFeed = feed;
mList = null;
}
@Override
protected void onStartLoading() {
Log.d(TAG, "onStartLoading");
if (mList != null) {
Log.d(TAG, "cahced.");
super.deliverResult(mList);
} else {
Log.d(TAG, "load.");
forceLoad();
}
};
@Override
protected void onStopLoading() {
cancelLoad();
}
@Override
protected void onReset() {
super.onReset();
}
@Override
public RssList loadInBackground() {
try {
SAXReader reader = new SAXReader();
Document document = reader.read(this.mFeed.url);
List<Element> list = document.selectNodes("/rss/channel/item");
if (list != null) {
for (Element element : list) {
Item item = new Item();
Element title = element.element("title");
if (title != null) {
item.title = title.getStringValue();
}
Element link = element.element("link");
if (link != null) {
item.url = link.getStringValue();
}
if (mList == null) {
mList = new RssList();
}
mList.addItem(item);
}
} else {
Log.d(TAG, "not found");
}
} catch (Exception e) {
e.printStackTrace();
}
return mList;
}
}