Created
November 13, 2015 17:24
-
-
Save burnix/79b6caeb3c5868c5c683 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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