Skip to content

Instantly share code, notes, and snippets.

@burnix
Created November 13, 2015 17:24
Show Gist options
  • Save burnix/79b6caeb3c5868c5c683 to your computer and use it in GitHub Desktop.
Save burnix/79b6caeb3c5868c5c683 to your computer and use it in GitHub Desktop.
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import java.io.IOException;
import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class MainActivity extends AppCompatActivity {
ProgressDialog waitProgress;
List<Feed> rssItems;
Adapter adapter;
String url = "http://www.cbc.ca/cmlink/rss-topstories";
OkHttpClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new ParseAsync().execute();
}
private class ParseAsync extends AsyncTask<Void, Integer, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
waitProgress = ProgressDialog.show(MainActivity.this, "",
"Loading please wait...");
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
if (waitProgress != null) {
waitProgress.dismiss();
}
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
displayData();
if (waitProgress != null) {
waitProgress.dismiss();
}
}
@Override
protected Void doInBackground(Void... params) {
try {
synchronized (this) {
saxParser();
publishProgress(25);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
private void saxParser() {
try {
rssItems = new ArrayList<Feed>();
client = new OkHttpClient();
// code request code here
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
String xmlstring = response.body().string();
SAXParserFactory saxPF = SAXParserFactory.newInstance();
SAXParser saxP = saxPF.newSAXParser();
RssParseHandler myXMLHandler = new RssParseHandler();
InputSource inputSource = new InputSource(new StringReader(xmlstring));
saxP.parse(inputSource, myXMLHandler);
rssItems = myXMLHandler.getItems();
// Log.i("SaxParser", "size: " + movie_list.size());
} catch (Exception e) {
System.out.println(e);
}
}
private void displayData() {
ListView listView = (ListView) findViewById(R.id.listView);
adapter = new Adapter(this, R.layout.item, rssItems);
adapter.notifyDataSetChanged();
listView.setAdapter(adapter);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment