From e13c92ecf718e45cf03b3aff0d7cf3238dd955ad Mon Sep 17 00:00:00 2001 From: Robert Kolner Date: Tue, 24 Jan 2012 18:04:18 +0100 Subject: [PATCH] Added news. --- AndroidManifest.xml | 5 +- res/layout/news_list_row.xml | 21 +++++++ .../app/ui/BaseDnsActivity.java | 1 + .../app/ui/DnsActivity.java | 7 ++- .../app/ui/{ => lists}/BaseListActivity.java | 30 ++++++---- .../app/ui/{ => lists}/EventListActivity.java | 6 +- .../{ => lists}/EventListTicketsActivity.java | 4 +- .../app/ui/lists/NewsListActivity.java | 60 +++++++++++++++++++ 8 files changed, 116 insertions(+), 18 deletions(-) create mode 100644 res/layout/news_list_row.xml rename src/com/studentersamfundet/app/ui/{ => lists}/BaseListActivity.java (84%) rename src/com/studentersamfundet/app/ui/{ => lists}/EventListActivity.java (96%) rename src/com/studentersamfundet/app/ui/{ => lists}/EventListTicketsActivity.java (84%) create mode 100644 src/com/studentersamfundet/app/ui/lists/NewsListActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f547fb9..96c1c9b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -19,8 +19,9 @@ - - + + + \ No newline at end of file diff --git a/res/layout/news_list_row.xml b/res/layout/news_list_row.xml new file mode 100644 index 0000000..6c1567b --- /dev/null +++ b/res/layout/news_list_row.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/src/com/studentersamfundet/app/ui/BaseDnsActivity.java b/src/com/studentersamfundet/app/ui/BaseDnsActivity.java index 0b1ef25..8dbe4e8 100644 --- a/src/com/studentersamfundet/app/ui/BaseDnsActivity.java +++ b/src/com/studentersamfundet/app/ui/BaseDnsActivity.java @@ -1,6 +1,7 @@ package com.studentersamfundet.app.ui; import com.studentersamfundet.app.R; +import com.studentersamfundet.app.ui.lists.EventListActivity; import android.app.Activity; import android.content.Intent; diff --git a/src/com/studentersamfundet/app/ui/DnsActivity.java b/src/com/studentersamfundet/app/ui/DnsActivity.java index b2a89a4..77b4bf9 100644 --- a/src/com/studentersamfundet/app/ui/DnsActivity.java +++ b/src/com/studentersamfundet/app/ui/DnsActivity.java @@ -10,10 +10,12 @@ import android.view.View.OnTouchListener; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.widget.TextView; -import android.widget.Toast; import com.studentersamfundet.app.FeedFetcher; import com.studentersamfundet.app.R; +import com.studentersamfundet.app.ui.lists.EventListActivity; +import com.studentersamfundet.app.ui.lists.EventListTicketsActivity; +import com.studentersamfundet.app.ui.lists.NewsListActivity; public class DnsActivity extends BaseDnsActivity { public static final String feedURL = "http://studentersamfundet.no/rss/lars_program_feed.php"; @@ -156,7 +158,8 @@ public class DnsActivity extends BaseDnsActivity { } public void newsButton(View v) { - Toast.makeText(this, "Not implemented (yet!)", Toast.LENGTH_SHORT).show(); + Intent intent = setupNewIntent(NewsListActivity.class); + startActivity(intent); } public void joinButton(View v) { diff --git a/src/com/studentersamfundet/app/ui/BaseListActivity.java b/src/com/studentersamfundet/app/ui/lists/BaseListActivity.java similarity index 84% rename from src/com/studentersamfundet/app/ui/BaseListActivity.java rename to src/com/studentersamfundet/app/ui/lists/BaseListActivity.java index 0096b4c..8930d19 100644 --- a/src/com/studentersamfundet/app/ui/BaseListActivity.java +++ b/src/com/studentersamfundet/app/ui/lists/BaseListActivity.java @@ -1,4 +1,4 @@ -package com.studentersamfundet.app.ui; +package com.studentersamfundet.app.ui.lists; import java.io.IOException; @@ -10,11 +10,13 @@ import com.studentersamfundet.app.FeedFetcher; import com.studentersamfundet.app.IRSSParser; import com.studentersamfundet.app.R; import com.studentersamfundet.app.RSSParserProgram; +import com.studentersamfundet.app.ui.BaseDnsActivity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.ListAdapter; import android.widget.ListView; @@ -22,7 +24,7 @@ import android.widget.ProgressBar; import android.widget.Toast; public abstract class BaseListActivity extends BaseDnsActivity { - private DataHandler dataHandler; + private DataHandler datahandler; private FeedFetcher feed; private IRSSParser parser; @@ -45,14 +47,18 @@ public abstract class BaseListActivity extends BaseDnsActivity { } protected final DataHandler getDataHandler() { - if (!isUpdated && dataHandler == null) + if (!isUpdated && datahandler == null) throw new RuntimeException("You have to create and run list creator first!"); - return this.dataHandler; + return this.datahandler; } + /** + * Creates list adapter used by listview. + * @param objects + * @return + */ protected abstract ListAdapter createAdapter(T[] objects); - protected abstract ListCreator getListCreator(Context c, int idList, int idProgressBar); protected abstract class ListCreator extends AsyncTask { private String category = Event.ALL; @@ -87,14 +93,15 @@ public abstract class BaseListActivity extends BaseDnsActivity { @Override protected void onPreExecute() { if (forcedUpdate) { - dataHandler = null; + datahandler = null; } ListView list = (ListView)findViewById(idList); list.setVisibility(View.GONE); ProgressBar pb = (ProgressBar)findViewById(idProgressBar); - pb.setVisibility(View.VISIBLE); + if (pb != null) + pb.setVisibility(View.VISIBLE); } @Override @@ -103,9 +110,9 @@ public abstract class BaseListActivity extends BaseDnsActivity { // YAY = Fetch the feed. // NAY = Inform about no connection. try { - if (dataHandler == null) { + if (datahandler == null) { NodeList itemNodes = feed.fetch(BaseListActivity.this, this.forcedUpdate); - dataHandler = parser.parse(itemNodes); + datahandler = parser.parse(itemNodes); } return true; @@ -121,12 +128,15 @@ public abstract class BaseListActivity extends BaseDnsActivity { if (result) { ListView list = (ListView)findViewById(idList); T[] objects = getObjects(); + + Log.i("DNSapp", "Showing " +objects.length +" objects."); ListAdapter adapter = createAdapter(objects); list.setAdapter(adapter); list.setVisibility(View.VISIBLE); ProgressBar pb = (ProgressBar)findViewById(idProgressBar); - pb.setVisibility(View.GONE); + if (pb != null) + pb.setVisibility(View.GONE); } else { Toast toast = Toast.makeText(context, R.string.error_noconnection_noupdate, Toast.LENGTH_LONG); toast.show(); diff --git a/src/com/studentersamfundet/app/ui/EventListActivity.java b/src/com/studentersamfundet/app/ui/lists/EventListActivity.java similarity index 96% rename from src/com/studentersamfundet/app/ui/EventListActivity.java rename to src/com/studentersamfundet/app/ui/lists/EventListActivity.java index 7ab8ad5..44e6bf8 100644 --- a/src/com/studentersamfundet/app/ui/EventListActivity.java +++ b/src/com/studentersamfundet/app/ui/lists/EventListActivity.java @@ -1,4 +1,4 @@ -package com.studentersamfundet.app.ui; +package com.studentersamfundet.app.ui.lists; import java.io.IOException; import java.io.InputStream; @@ -29,6 +29,8 @@ import android.widget.Toast; import com.studentersamfundet.app.Event; import com.studentersamfundet.app.R; +import com.studentersamfundet.app.ui.ChooseCategoryDialog; +import com.studentersamfundet.app.ui.EventViewActivity; import com.studentersamfundet.app.ui.ChooseCategoryDialog.Callback; public class EventListActivity extends BaseListActivity { @@ -169,7 +171,7 @@ public class EventListActivity extends BaseListActivity { - protected ListCreator getListCreator(Context context, int idList, int idProgressBar) { + protected ListCreator getListCreator(Context context, int idList, int idProgressBar) { return new ListCreator(context, idList, idProgressBar) { @Override diff --git a/src/com/studentersamfundet/app/ui/EventListTicketsActivity.java b/src/com/studentersamfundet/app/ui/lists/EventListTicketsActivity.java similarity index 84% rename from src/com/studentersamfundet/app/ui/EventListTicketsActivity.java rename to src/com/studentersamfundet/app/ui/lists/EventListTicketsActivity.java index c727b3a..51d1fc1 100644 --- a/src/com/studentersamfundet/app/ui/EventListTicketsActivity.java +++ b/src/com/studentersamfundet/app/ui/lists/EventListTicketsActivity.java @@ -1,4 +1,4 @@ -package com.studentersamfundet.app.ui; +package com.studentersamfundet.app.ui.lists; import android.content.Context; import android.content.Intent; @@ -10,7 +10,7 @@ import com.studentersamfundet.app.Event; public class EventListTicketsActivity extends EventListActivity { @Override - protected ListCreator getListCreator(Context context, int idList, int idProgressBar) { + protected ListCreator getListCreator(Context context, int idList, int idProgressBar) { return new ListCreator(context, idList, idProgressBar) { @Override protected Event[] getObjects() { diff --git a/src/com/studentersamfundet/app/ui/lists/NewsListActivity.java b/src/com/studentersamfundet/app/ui/lists/NewsListActivity.java new file mode 100644 index 0000000..adf59b4 --- /dev/null +++ b/src/com/studentersamfundet/app/ui/lists/NewsListActivity.java @@ -0,0 +1,60 @@ +package com.studentersamfundet.app.ui.lists; + +import com.studentersamfundet.app.News; +import com.studentersamfundet.app.R; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListAdapter; +import android.widget.TextView; + +public class NewsListActivity extends BaseListActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.event_list); + + ListCreator lc = new ListCreator(this, R.id.event_list, R.id.event_list_progress_bar) { + + @Override + protected News[] getObjects() { + return getDataHandler().getNews(); + } + }; + lc.execute(); + } + + + @Override + protected ListAdapter createAdapter(T[] objects) { + final News[] news = (News[])objects; + ListAdapter adapter = new ArrayAdapter(this, 0, 0, news) { + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewGroup row; + + if (null == convertView) { + LayoutInflater inflater = getLayoutInflater(); + row = (ViewGroup)inflater.inflate(0, null); + } else { + row = (ViewGroup)convertView; + } + + News article = news[position]; + + TextView title = (TextView)row.findViewById(R.id.news_list_row_title); + TextView description = (TextView)row.findViewById(R.id.news_list_row_desc); + + title.setText(article.title); + description.setText(article.description); + + return row; + } + }; + + return adapter; + } +}