Skip to content

Instantly share code, notes, and snippets.

@robhinds
robhinds / gist:5200010
Created March 19, 2013 20:49
SAX RSS Parser
public void startElement(String uri, String localName, String qName, Attributes atts) {
chars = new StringBuffer();
}
public void characters(char ch[], int start, int length) {
chars.append(new String(ch, start, length));
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if (localName.equalsIgnoreCase("title")){
@robhinds
robhinds / gist:5200099
Created March 19, 2013 21:01
ListFragment on create
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
refreshList();
}
private void refreshList(){
rssService = new RssService(this);
rssService.execute(BLOG_URL);
}
@robhinds
robhinds / gist:5200114
Created March 19, 2013 21:03
RSS Reader async task
public class RssService extends AsyncTask<String, Void, List<Article>> {
private ProgressDialog progress;
private Context context;
private ArticleListFragment articleListFrag;
public RssService(ArticleListFragment articleListFragment) {
context = articleListFragment.getActivity();
articleListFrag = articleListFragment;
progress = new ProgressDialog(context);
@Override
protected List<Article> doInBackground(String... urls) {
String feed = urls[0];
URL url = null;
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
protected void onPostExecute(final List<Article> articles) {
Log.e("ASYNC", "POST EXECUTE");
articleListFrag.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
for (Article a : articles){
Log.d("DB", "Searching DB for GUID: " + a.getGuid());
DbAdapter dba = new DbAdapter(articleListFrag.getActivity());
dba.openToRead();
Article fetchedArticle = dba.getBlogListing(a.getGuid());
ArticleListAdapter adapter = new ArticleListAdapter(articleListFrag.getActivity(), articles);
articleListFrag.setListAdapter(adapter);
adapter.notifyDataSetChanged();
def sqrt(x: Double): Double = ...
def sqrt = {x-> ... }
def sqrtIter(guess: Double, x: Double): Double =
if (isGoodEnough(guess, x)) guess
else sqrtIter(improve(guess, x), x)
def improve(guess: Double, x: Double) =
(guess + x / guess) / 2
def isGoodEnough(guess: Double, x: Double) =
abs(guess * guess - x) < 0.001
//Improve the guess using Newton's method
def improve = { guess, x ->
(guess + x / guess) / 2
}
//Check if our guess is good enough, within a chosen threshold
def isGoodEnough = {guess, x ->
abs(guess * guess - x) < 0.001
}