diff options
Diffstat (limited to 'Android/04-TheFragmentClass/FragmentsLab/src/course/labs/fragmentslab/FeedFragmentData.java')
-rw-r--r-- | Android/04-TheFragmentClass/FragmentsLab/src/course/labs/fragmentslab/FeedFragmentData.java | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Android/04-TheFragmentClass/FragmentsLab/src/course/labs/fragmentslab/FeedFragmentData.java b/Android/04-TheFragmentClass/FragmentsLab/src/course/labs/fragmentslab/FeedFragmentData.java new file mode 100644 index 0000000..fb09cae --- /dev/null +++ b/Android/04-TheFragmentClass/FragmentsLab/src/course/labs/fragmentslab/FeedFragmentData.java @@ -0,0 +1,83 @@ +package course.labs.fragmentslab; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import android.content.Context; +import android.util.Log; +import android.util.SparseArray; + +// Utility class that provides stored Twitter feed data +public class FeedFragmentData { + private static final String TAG = "FeedFragmentData"; + private static final int[] IDS = { R.raw.ladygaga, R.raw.rebeccablack, R.raw.taylorswift }; + + private SparseArray<String> mFeeds = new SparseArray<String>(); + private Context mContext; + + + public FeedFragmentData(Context context) { + mContext = context; + loadFeeds(); + } + + // Load all stored Twitter feeds into the mFeeds SparseArray. + private void loadFeeds() { + for (int id : IDS) { + InputStream inputStream = mContext.getResources().openRawResource(id); + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); + StringBuffer buffer = new StringBuffer(""); + + // Read raw data from resource file + try { + String line = ""; + while ((line = reader.readLine()) != null) { + buffer.append(line); + } + } catch (IOException e) { + Log.i(TAG, "IOException"); + } + + // Convert raw data into a String + JSONArray feed = null; + try { + feed = new JSONArray(buffer.toString()); + } catch (JSONException e) { + Log.i(TAG, "JSONException"); + } + mFeeds.put(id, procFeed(feed)); + } + } + + // Convert JSON formatted data to a String + private String procFeed(JSONArray feed) { + String name = ""; + String tweet = ""; + + // string buffer for twitter feeds + StringBuffer textFeed = new StringBuffer(""); + + for (int j = 0; j < feed.length(); j++) { + try { + tweet = feed.getJSONObject(j).getString("text"); + JSONObject user = (JSONObject) feed.getJSONObject(j).get("user"); + name = user.getString("name"); + } catch (JSONException e) { + Log.i(TAG, "JSONException while processing feed"); + } + textFeed.append(name + " - " + tweet + "\n\n"); + } + return textFeed.toString(); + } + + // Return the Twitter feed data for the specified position as a single String + String getFeed (int position) { + return mFeeds.get(IDS[position]); + } +} |