For the most it is the same as the RSS Reader in terms of laying out the Android Lists and the layout.xml, so I won't go over that, I will just go through the Twitter integration.
The first step is to retrieve all the tweets, for this I am using the very useful Twitter4J Java library that simply wraps the Twitter API with a Java API
Twitter twitter = new TwitterFactory().getInstance(); Liststatuses = new ArrayList (); try { statuses = twitter.getUserTimeline(screenName); } catch (TwitterException e) { Log.e("Twitter", "Error logging in to Twitter"); Log.e("Twitter", e.getMessage()); }
Once you have the list of latest tweets, I convert them in to JSON so my listAdapter can process them more easily:
ArrayListJOBS = new ArrayList (); try { if (statuses.size()>0){ for (Status s : statuses){ String avatar = "http://" + s.getUser().getProfileImageURL().getHost() + s.getUser().getProfileImageURL().getPath(); JSONObject object = new JSONObject(); object.put("tweet", s.getText()); String timePosted = Utility.getDateDifference(s.getCreatedAt()); object.put("tweetDate", timePosted); object.put("author", s.getUser().getName()); object.put("avatar", avatar); object.put("userObj", s.getUser()); object.put("tweetId", s.getId()); JOBS.add(object); } }else{ JSONObject object = new JSONObject(); object.put("tweet", "You have not logged in yet! Please log on to view latest tweets"); object.put("author", ""); JOBS.add(object); } } catch (JSONException e1) { Log.e("JSON", "There was an error creating the JSONObject", e1); }
And thats pretty much that! the listAdapter just pulls the information out of the JSON objects as per above and displays as necessary. The only other thing I will show is a little Date util class to make the date posted a little more fun:
public static String getDateDifference(Date thenDate){
Calendar now = Calendar.getInstance();
Calendar then = Calendar.getInstance();
now.setTime(new Date());
then.setTime(thenDate);
// Get the represented date in milliseconds
long nowMs = now.getTimeInMillis();
long thenMs = then.getTimeInMillis();
// Calculate difference in milliseconds
long diff = nowMs - thenMs;
// Calculate difference in seconds
long diffMinutes = diff / (60 * 1000);
long diffHours = diff / (60 * 60 * 1000);
long diffDays = diff / (24 * 60 * 60 * 1000);
if (diffMinutes<60){
if (diffMinutes==1)
return diffMinutes + " minute ago";
else
return diffMinutes + " minutes ago";
} else if (diffHours<24){
if (diffHours==1)
return diffHours + " hour ago";
else
return diffHours + " hours ago";
}else if (diffDays<30){
if (diffDays==1)
return diffDays + " day ago";
else
return diffDays + " days ago";
}else {
return "a long time ago..";
}
}

The twitter reader allows you to view and edit your profile from within the app, browse your followers and follow/unfollow/managed blocked users from inside the app. And also Supports native retweets and "quote" retweets so you can comment before posting.
ReplyDelete