Much work done on how the app shows special characters. Now it is in sync with the server and it seems like it works.

This commit is contained in:
Robert Kolner committed 2011-09-21 21:46:33 +02:00
1 parent 1d1a1cbed8
commit aaf05368e2
5 files changed
+40 -33

No files matched your search

+5 -5
View File
@@ -22,11 +22,11 @@ public class Event implements Serializable {
String category) {
this.id = id;
this.title = title;
this.description = description;
this.date = date;
this.location = location;
this.text = text;
this.category = category;
this.description = (description == null) ? "" : description;
this.date = (date == null) ? "" : date;
this.location = (location == null) ? "" : location;
this.text = (text == null) ? "" : text;
this.category = (category == null) ? "" : category;
}
public String toString() {
@@ -22,10 +22,18 @@ import android.content.Context;
public class FeedFetcher {
private final String LOCAL_FILENAME = "dns_events";
private InputStream openHttpConnection(String URL) throws IOException {
private Context context;
private String url;
public FeedFetcher(Context context, String url) {
this.context = context;
this.url = url;
}
private InputStream openHttpConnection() throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(URL);
URL url = new URL(this.url);
URLConnection con = url.openConnection();
if (!(con instanceof HttpURLConnection))
@@ -53,20 +61,20 @@ public class FeedFetcher {
* @throws IOException Is thrown if the app cannot download the file from
* the internet and there is no local copy.
*/
public NodeList fetch(String URL, Context c) throws IOException {
public NodeList fetch() throws IOException {
InputStream in = null;
NodeList itemNodes = null;
/* Update the local file if possible. */
try {
saveFile(openHttpConnection(URL), c);
saveFile(openHttpConnection(), context);
} catch(IOException e) {
/* OK, so we failed to update it. It doesn't matter yet, because we can try to... */
}
/* ...load local file: */
in = loadFile(c); // if we fail here, we fail ultimately. Throw the Exception!
in = loadFile(context); // if we fail here, we fail ultimately. Throw the Exception!
Document doc = null;
@@ -34,7 +34,7 @@ public class XmlParser {
NodeList descriptionNodes = (itemElement).getElementsByTagName("description");
NodeList dateNodes = (itemElement).getElementsByTagName("date");
NodeList locationNodes = (itemElement).getElementsByTagName("location");
NodeList textNodes = (itemElement).getElementsByTagName("text");
NodeList textNodes = (itemElement).getElementsByTagName("content");
NodeList categoryNodes = (itemElement).getElementsByTagName("category");
// Convert a Node into an Element.
@@ -31,20 +31,15 @@ public class EventViewActivity extends BaseDnsActivity {
TextView datetime = (TextView) findViewById(R.id.event_view_datetime);
Button link = (Button) findViewById(R.id.event_view_link);
title.setText(e.title);
location.setText(e.location);
datetime.setText(e.date);
title.setText(Html.fromHtml(e.title));
location.setText(Html.fromHtml(e.location));
datetime.setText(Html.fromHtml(e.date));
StringBuilder sb = new StringBuilder();
if (e.description.length() > 0) {
sb.append("<b>");
sb.append(e.description);
sb.append("</b><br/><br/>");
}
if (e.text.length() > 0) {
sb.append(e.text);
description.setText(Html.fromHtml(e.text));
} else if (e.description.length() > 0) {
description.setText(Html.fromHtml(e.description));
}
description.setText(Html.fromHtml(sb.toString()));
if (e.id > 0) { // if id exists and seems legit
link.setVisibility(View.VISIBLE);
@@ -6,6 +6,7 @@ import org.w3c.dom.NodeList;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -23,24 +24,27 @@ import com.studentersamfundet.app.R;
import com.studentersamfundet.app.XmlParser;
public class ProgramListActivity extends BaseDnsActivity {
public static final String feedURL = "http://dl.dropbox.com/u/293287/test.xml";
//public static final String feedURL = "http://studentersamfundet.no/";
public static final String localURL = "/data/com.studentersamfundet.app/files/dns_events";
public static FeedFetcher feed = new FeedFetcher();
public static XmlParser parser = new XmlParser();
public DataHandler dh;
//public static final String feedURL = "http://dl.dropbox.com/u/293287/test.xml";
public static final String feedURL = "http://studentersamfundet.no/rss/lars_program_feed.php";
private FeedFetcher feed;
private XmlParser parser;
private DataHandler dataHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.event_list);
this.feed = new FeedFetcher(this, feedURL);
this.parser = new XmlParser();
// Do we have intarwebs?
// YAY = Fetch the feed.
// NAY = Inform about no connection.
try {
NodeList itemNodes = feed.fetch(feedURL, this);
dh = parser.parse(itemNodes);
NodeList itemNodes = feed.fetch();
dataHandler = parser.parse(itemNodes);
} catch (IOException e) {
Toast toast = Toast.makeText(this, R.string.error_noconnection_noupdate, Toast.LENGTH_LONG);
@@ -54,7 +58,7 @@ public class ProgramListActivity extends BaseDnsActivity {
}
protected ListAdapter createAdapter() {
Event[] events = dh.populateList();
Event[] events = dataHandler.populateList();
ListAdapter adapter = new ArrayAdapter<Event>(this, R.layout.event_list_row, R.id.event_list_row_text, events) {
@Override
@@ -71,10 +75,10 @@ public class ProgramListActivity extends BaseDnsActivity {
final Event e = getItem(position);
TextView titleView = (TextView) row.findViewById(R.id.event_list_row_text);
titleView.setText(e.title);
titleView.setText(Html.fromHtml(e.title));
TextView dateView = (TextView) row.findViewById(R.id.event_list_row_date);
dateView.setText(e.getDateString());
dateView.setText(Html.fromHtml(e.getDateString()));
row.setOnClickListener(new OnClickListener() {