<?xml version="1.0" encoding="utf-8"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://purl.org/rss/1.0/" xmlns:admin="http://webns.net/mvcb/"><channel rdf:about="/rss.aspx"><title>Brian's Blog</title><link>http://voghan.com</link><description /><dc:publisher>Quick Blogcast</dc:publisher><admin:generatorAgent rdf:resource="http://app.onlinequickblog.com/" /><items><rdf:Seq><rdf:li rdf:resource="http://voghan.com/2012/03/05/safety-net.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2012/01/04/fragmentation.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/12/16/early-galaxy-nexus-impression.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/10/10/quick-impressions-of-cq.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/06/26/the-dilema.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/06/08/analytics-for-android-revisited.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/06/06/custom-list-view-using.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/06/01/getting-paid.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/05/27/event-tracking-with-analytics.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/05/25/starting-a-mobile--business.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/05/21/analytics-for-android.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/05/18/refactoring-handicap-part-1.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2011/03/22/a-year-in-review-of-my-android-development.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/12/30/quick-impressions-of-nexus-s.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/12/16/hello-nexus-s.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/12/11/new-android-return-policy.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/12/09/going-free.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/11/23/android-market.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/11/01/social-network-dream.aspx?ref=rss" /><rdf:li rdf:resource="http://voghan.com/2010/10/29/filtering-rounds.aspx?ref=rss" /></rdf:Seq></items></channel><item rdf:about="http://voghan.com/2012/03/05/safety-net.aspx?ref=rss"><title>Safety Net</title><link>http://voghan.com/2012/03/05/safety-net.aspx?ref=rss</link><description>&lt;span style="text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;font face="arial, sans-serif" size="2"&gt;&lt;span style="line-height: 18px;"&gt;I've recently decided to move my Android app to Github for source control hosting. As a result the master and branches are now safely checked in on a remote server.&amp;nbsp;This allows me to make&amp;nbsp;changes&amp;nbsp;to the application locally and have a master copy on a remove computer. &amp;nbsp;Now I can have a&amp;nbsp;viable&amp;nbsp;archive of my code changes so I can rollback changes if they don't work as desired.&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;What this has bought me is the comfort to fully refactor my app. I've decided to rollback my most recent changes adopting the Android Action Bar. &amp;nbsp;I will create a version of the app only using Android 2.x libraries. I've found the transition to using Fragments and the Action bar more difficult than originally estimated. &amp;nbsp;It seems once I solve one issue, I find another one waiting for me. &amp;nbsp;Since less than 5% of my users are on an Android 3 or 4 device I am not going to optimize for those version of Android in my next release.&amp;nbsp;&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;What I plan on doing this year is finish this refactoring then refactor again to only support Android 3.x and up. I will then have two deployed apps that target the two different UI approaches in Android. My hope is this will allow me to release a quick update for a new feature I have in mind and give me time to resolve the flaw I discovered in my current implementation.&lt;/span&gt;</description><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2012-03-05T14:53:50Z</dc:date></item><item rdf:about="http://voghan.com/2012/01/04/fragmentation.aspx?ref=rss"><title>Fragmentation</title><link>http://voghan.com/2012/01/04/fragmentation.aspx?ref=rss</link><description>&lt;div&gt;&lt;b id="internal-source-marker_0.5760641812812537"&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Fragmentation is one of those words I tend to hear a lot lately. &amp;nbsp;People like to throw out fragmentation as a con against android because of the various OS versions. &amp;nbsp;Others use fragmentation to refer to that fact Android runs on many different physical devices with different screens and keyboard options. &amp;nbsp;Others might say fragmentation is what Amazon is doing by taking Android and spinning it into a closed environment for the Kindle Fire. &amp;nbsp;All of these definitions are good examples of fragmentation in Android but don’t really concern me that much.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;My main issue with fragmentation is the fragmentation I did to the users of my Android app - Handicap: Golf Tracker. &amp;nbsp;Like many mobile developers I had dreams of making that great app that everyone wants and quiting my day job as the cash rolled in. &amp;nbsp;Well, that hasn’t happened yet. &amp;nbsp;As I watched my app sales dwindle I did the unthinkable and created a free version that relies on ad revenue.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;This single change forced me to make a few compromises and create two versions of my code base. &amp;nbsp;Gradually I have been able to isolate the business logic in my app to a single code base but still have the two different UI code bases that house most of the display logic. &amp;nbsp;This has lead me to have a “lead” code base that I implement changes on first then migrate to the other code base as needed.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Over the past year I have been updating both code bases, adding features and making each app stand out. &amp;nbsp;This has lead to a steady stream of new users. &amp;nbsp;The new users of the free version has been great and actually makes me feel like my app has been a success. &amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As I start the new year, I start to plan changes I want to implement in the next iteration of the app. &amp;nbsp;This now has me thinking of fragmentation again. &amp;nbsp;Which features should I make free and which features should I make available only to paid users. &amp;nbsp;Should I even make that differentiation at all? &amp;nbsp;Should both versions be identical when it comes to features? Where should I place my effort? &amp;nbsp;How do I want to further fragment my user base?&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;It is really annoying. &amp;nbsp;I wish I just had one user base to build for but I’m not willing to abandons either group. &amp;nbsp;My paid users are few but they at least paid for my work. &amp;nbsp;The free users are clearly the majority and are bringing me almost as much revenue as the paid users through ads. &amp;nbsp;I made my fragmented bed and now I have to sleep in it. &amp;nbsp;I just wish I had known then what I knew now and started with just the ad supported app. &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;</description><dc:subject>Development</dc:subject><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2012-01-04T22:19:55Z</dc:date></item><item rdf:about="http://voghan.com/2011/12/16/early-galaxy-nexus-impression.aspx?ref=rss"><title>Early Galaxy Nexus Impression</title><link>http://voghan.com/2011/12/16/early-galaxy-nexus-impression.aspx?ref=rss</link><description>&lt;div style="background-color: transparent; "&gt;&lt;span id="internal-source-marker_0.2654660800471902" style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;My initial impressions of the Galaxy Nexus is that it's a large phone. &amp;nbsp;The 4.65" screen and 150 grams make this phone's size noticeably larger than my previous phone. &amp;nbsp;That said the phone does feel good in my hand and is beautiful. &amp;nbsp;I really like the grey side and back of the phone. The look and feel remind me a more of the Nexus One than the Nexus S. &amp;nbsp;The phone also feels less plasticy since the back is textured. &amp;nbsp;The phone does have a slight tear drop design that creates a little bump on the bottom. It might be a bit large for most people but the design is very appealing.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As appealing as the hardware in this phone is, the real innovation is in the software. &amp;nbsp;Android 4.0, code named Ice Cream Sandwich or ICS, is the latest version of the mobile OS. &amp;nbsp;The OS has been completely overhauled compared to the last phone version of the OS. &amp;nbsp;The UI innovations seen in the Android 3.0 for tablets, has finally come to phones. &amp;nbsp;In the past mobile phone manufactures have “skinned” Android devices to make them more user friendly. &amp;nbsp;These “skins” would have custom app launchers, widgets and lock screens that hid native Android operations in favor of the specific phone manufacturer. &amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;That should all change now with ICS because Google has finally built a quality competitor to these “skins”. &amp;nbsp;The new app drawer in ICS provides the same access to your apps as it did before but now allows you to add widgets to your home screens. &amp;nbsp;In previous versions of Android this was hidden away and not easy for most users. &amp;nbsp;Now you can preview the widget and simply drag it to the home screen of your choice. &amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As in the Tablet version of Android, widgets are given a lot more flexibility in Ice Cream Sandwich. &amp;nbsp;Google has built in several nice widgets for ICS making it easier to see pictures, bookmarks and email. &amp;nbsp;These new widgets are also re-sizable now so you can customize your home screens to show the content you want to see. &amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 13px; font-family: Arial; background-color: rgb(255, 255, 255); text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;The largest change most people will notice with the Galaxy Nexus is that the physical buttons on the face of the phone have been replaced with software buttons. &amp;nbsp;The physical Home, Search, Back and Menu buttons are now gone and replaced with Back, Home and Tasks touch screen buttons. &amp;nbsp;The Back and Home buttons act as one would expect. &amp;nbsp;The Task button displays a list of your previously opened applications and allows you to easily switch to that application. &amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Brace yourself - the Search and Menu buttons are now only available in applications that enable those features. &amp;nbsp;There is no more hidden menu options not visible on the screen. &amp;nbsp;If there is a menu, you’ll see the menu button on the screen. &amp;nbsp;Search is available on each home screen so you don’t have to hunt for it. &amp;nbsp;Some people are going to absolutely hate this change. &amp;nbsp;I’m not a fan that search is on every home screen. &amp;nbsp;This is a radical change that is for the best.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;So far I am happy with the button change in Android. &amp;nbsp;I’m still getting used to the new task feature and the Home button is a little close to the space bar when typing but over time I expect I’ll get used to the change. &amp;nbsp;If you absolutely hate this design then I suggest you vote with your wallet. &amp;nbsp;Manufactures are going to be coming out with new phones running ICS and some way still have the physical buttons. You can always buy one of those phones. &amp;nbsp;Fragmentation equals freedom of choice. &amp;nbsp;Enjoy.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 15px; font-family: Arial; background-color: transparent; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Overall I’ll have to see how the phone performs on calls, pictures and other items that come up. &amp;nbsp;I have been very happy with the phone so far. &amp;nbsp;I expect I’ll be very happy for a long time running the best Android phone available.&lt;/span&gt;&lt;/div&gt;</description><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-12-16T20:08:57Z</dc:date></item><item rdf:about="http://voghan.com/2011/10/10/quick-impressions-of-cq.aspx?ref=rss"><title>Quick Impressions of CQ</title><link>http://voghan.com/2011/10/10/quick-impressions-of-cq.aspx?ref=rss</link><description>My current consulting project is working with Abode's CQ5 Web Content Management (WCM) tool for building content rich web applications. &amp;nbsp;The product is a collection of Apache open source (Sling, Jackrabbit, Felix) projects&amp;nbsp;bundled&amp;nbsp;together with a JCR implementation, a customized Eclipse IDE and&amp;nbsp;enterprise&amp;nbsp;management tools. &amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The people that use CQ today build highly&amp;nbsp;visible&amp;nbsp;marketing applications where content&amp;nbsp;changes&amp;nbsp;are common. &amp;nbsp;CQ provides an authoring&amp;nbsp;environment&amp;nbsp;that makes it easy for non-technical resources to change out images, text and other content on a website. &amp;nbsp;The content is centrally managed in the CRX (Content Repository Extreme) and authors can edit pages in a pre-production environment.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;From a pure J2EE developer&amp;nbsp;experience, the framework feels like a combination of new and old technologies. &amp;nbsp;The developer creates JSP templates that define the layout of the web page. &amp;nbsp;There are JSP components that you can directly reference in the template or make available to the authors to drag and drop on a page. &amp;nbsp;CQ relies on a RESTful web application container. &amp;nbsp;CQ uses an OSGi console to add&amp;nbsp;back end&amp;nbsp;java services for handling post requests, accessing business logic and/or integration with external systems. &amp;nbsp;There is plenty of cool, non-mainstream technologies mixed in with traditional JSPs to provide an interesting product.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So far the framework has a lot of potential. &amp;nbsp;The administration tools are&amp;nbsp;excellent&amp;nbsp;for authors making it easy to edit content. &amp;nbsp;The custom Eclipse IDE has a lot to offer but doesn't support plugins. &amp;nbsp;I can see why this platform is very popular in marketing circles because of it's author friendly&amp;nbsp;experience. &amp;nbsp;From a J2EE&amp;nbsp;developer&amp;nbsp;standpoint the framework may feel a little constraining and you may want to consider using only CRX for sites that require more dynamic content.&lt;/div&gt;</description><dc:subject>Development</dc:subject><dc:subject>java</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-10-10T15:34:14Z</dc:date></item><item rdf:about="http://voghan.com/2011/06/26/the-dilema.aspx?ref=rss"><title>The Backup/Restore Dilemma</title><link>http://voghan.com/2011/06/26/the-dilema.aspx?ref=rss</link><description>&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;One of the changes I've wanted to put in place was the ability to backup a users data in the cloud. At first I was thinking of storing the entire data model in a NoSQL solution. I wasn't sure between Google's or Amazon's implementation I would adopt. I really didn't know much about either option.&amp;nbsp;&lt;br&gt;&lt;br&gt;I think that maybe I should just store the XML data file I create today in one of the solutions available. I figured I'd need a unique I'd for each user to make it easier to identify their data.&amp;nbsp; The problem I've come up with since is that I'm not sure how to keep that unique ID as users move from device to device or reinstall to a device.&lt;br&gt;&lt;br&gt;I'm tempted to start asking for use of their gmail account but I know that solution has flaws. What if people don't want to allow me access to their account? What if people don't care about their google account and just create a new one when they upgrade. I don't want to force people to provide an account to use my app.&lt;br&gt;&lt;br&gt;What I've discovered is that there is a simple backup option in Android for users with 2.2 and up phones. &amp;nbsp;I've successfully generated a UUID for an install and backed it up with the app preferences. &amp;nbsp;This feature will be something I roll out on the paid version of the app. &amp;nbsp;&lt;/div&gt;&lt;/div&gt;</description><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-06-27T01:48:51Z</dc:date></item><item rdf:about="http://voghan.com/2011/06/08/analytics-for-android-revisited.aspx?ref=rss"><title>Analytics for Android, Revisited</title><link>http://voghan.com/2011/06/08/analytics-for-android-revisited.aspx?ref=rss</link><description>In my previous post about Google Analytics I&amp;nbsp;demonstrated&amp;nbsp;how to use a parent class and&amp;nbsp;inheritance. &amp;nbsp;Some applications will not be able to use inheritance so they need to use a helper class. &amp;nbsp;Here is my example of an example class.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000;"&gt;AnalyticsHelper {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;static&lt;/code&gt; &lt;code style="color: #000;"&gt;final String TAG = &lt;/code&gt;&lt;code style="color: blue;"&gt;"AnalyticsHelper"&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;GoogleAnalyticsTracker mTracker;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #000;"&gt;Context mApplicationContext;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;static&lt;/code&gt; &lt;code style="color: #000;"&gt;AnalyticsHelper sInstance;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #008200;"&gt;/**&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 15px !important;"&gt;&lt;code style="color: #008200;"&gt;* Returns the global {@link AnalyticsUtils} singleton object, creating one&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 15px !important;"&gt;&lt;code style="color: #008200;"&gt;* if necessary.&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 15px !important;"&gt;&lt;code style="color: #008200;"&gt;*/&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;static&lt;/code&gt; &lt;code style="color: #000;"&gt;AnalyticsHelper getInstance(Context context) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000;"&gt;(sInstance == &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;null&lt;/code&gt; &lt;code style="color: #000;"&gt;&amp;amp;&amp;amp; context != &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;null&lt;/code&gt;&lt;code style="color: #000;"&gt;) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #000;"&gt;sInstance = &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;AnalyticsHelper(context);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;return&lt;/code&gt; &lt;code style="color: #000;"&gt;sInstance;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #000;"&gt;AnalyticsHelper(Context context) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000;"&gt;(context == &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;null&lt;/code&gt;&lt;code style="color: #000;"&gt;) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #008200;"&gt;// This should only occur for the empty Analytics utils object.&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;return&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;mApplicationContext = context.getApplicationContext();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;mTracker = GoogleAnalyticsTracker.getInstance();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;mTracker.start(&lt;/code&gt;&lt;code style="color: blue;"&gt;"UA-CODE"&lt;/code&gt;&lt;code style="color: #000;"&gt;, mApplicationContext);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #008200;"&gt;//mTracker.setDebug(true);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #008200;"&gt;//mTracker.setDryRun(true);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;Log.d(TAG, &lt;/code&gt;&lt;code style="color: blue;"&gt;"Initializing Analytics"&lt;/code&gt;&lt;code style="color: #000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;trackError(RuntimeException e, String action, String label, String errorMessage, Context context) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;trackEvent(&lt;/code&gt;&lt;code style="color: blue;"&gt;"exception"&lt;/code&gt;&lt;code style="color: #000;"&gt;, action, label, 0);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;Toast.makeText(context, errorMessage, Toast.LENGTH_SHORT).show();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;throw&lt;/code&gt; &lt;code style="color: #000;"&gt;e;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;trackEvent(final String category, final String action, final String label, final &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;int&lt;/code&gt; &lt;code style="color: #000;"&gt;value) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;AsyncTask&amp;lt;Void, Void, Void&amp;gt;() {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #000;"&gt;@Override&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #000;"&gt;Void doInBackground(Void... voids) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;try&lt;/code&gt; &lt;code style="color: #000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 60px !important;"&gt;&lt;code style="color: #000;"&gt;mTracker.trackEvent(category, action, label, value);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #000;"&gt;} &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;catch&lt;/code&gt; &lt;code style="color: #000;"&gt;(Exception e) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 60px !important;"&gt;&lt;code style="color: #000;"&gt;Log.w(TAG, e.getMessage());&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;return&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;null&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;}.execute();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;trackPageView(final String path) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;AsyncTask&amp;lt;Void, Void, Void&amp;gt;() {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #000;"&gt;@Override&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #000;"&gt;Void doInBackground(Void... voids) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;try&lt;/code&gt; &lt;code style="color: #000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 60px !important;"&gt;&lt;code style="color: #000;"&gt;mTracker.trackPageView(path);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #000;"&gt;} &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;catch&lt;/code&gt; &lt;code style="color: #000;"&gt;(Exception e) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 60px !important;"&gt;&lt;code style="color: #000;"&gt;Log.w(TAG, e.getMessage());&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 48px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;return&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;null&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;}.execute();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;dispatch() {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #008200;"&gt;//didn't like running as a single thread&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;mTracker.dispatch();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;stop() {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;dispatch();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;mTracker.stop();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In the code above I'm creating a singleton of my helper class and providing five methods to make it easy to track events and page views. &amp;nbsp;The main change here is that I'm calling trackPageView and trackEvent in ASyncTasks so that they don;t run on the UI thread. &amp;nbsp;I had issues running dispatch off the UI thread.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Here is an easy example of calling trackError through the AnalyticsHelper&amp;nbsp;singleton. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;updateHandicap(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;int&lt;/code&gt; &lt;code style="color: #000;"&gt;golferId) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;try&lt;/code&gt; &lt;code style="color: #000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;AsyncTask.Status status = updateGolferTask.getStatus();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000;"&gt;(AsyncTask.Status.PENDING.equals(status)) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 36px !important;"&gt;&lt;code style="color: #000;"&gt;updateGolferTask.execute(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;String[]{golferId + &lt;/code&gt;&lt;code style="color: blue;"&gt;""&lt;/code&gt;&lt;code style="color: #000;"&gt;});&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;} &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;catch&lt;/code&gt; &lt;code style="color: #000;"&gt;(Exception e) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #000;"&gt;AnalyticsHelper.getInstance(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;).trackEvent(&lt;/code&gt;&lt;code style="color: blue;"&gt;"exception"&lt;/code&gt;&lt;code style="color: #000;"&gt;, &lt;/code&gt;&lt;code style="color: blue;"&gt;"updateHandicap"&lt;/code&gt;&lt;code style="color: #000;"&gt;, &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;.getLocalClassName(), 0);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This is how I'm implementing Google Analytics in my app and it's similar to how Google implemented it in their Google IO 2011 android app. &amp;nbsp;As I work more with this I'll try to keep this blog up to date on how it's working. &amp;nbsp;I do love having analytics in my android app and wish I could do it with AOP instead of writing this boilerplate code everywhere.&lt;/div&gt;</description><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-06-08T20:59:45Z</dc:date></item><item rdf:about="http://voghan.com/2011/06/06/custom-list-view-using.aspx?ref=rss"><title>Custom List View using ArrayList</title><link>http://voghan.com/2011/06/06/custom-list-view-using.aspx?ref=rss</link><description>&lt;div&gt;It's a common practice in Android applications to display a list of elements in your Android application. &amp;nbsp;For the most part you will be displaying this list from your database using a database cursor. &amp;nbsp;If your data comes from a different source like a web service, data feed or data file, you will need to create a custom view adapter for your ListView.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In a traditional list activity your application will have a layout and an activity class. &amp;nbsp;To display a custom list view you will need to create a new layout that will represent just one row in the list and a custom ArrayAdapter to map your view layout to your data model. &amp;nbsp;I've provided code snippets of all of these from my golf application.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;First thing you will want to define is the layout of your data. &amp;nbsp;This custom layout will be used in the main layout of your&amp;nbsp;application&amp;nbsp;to represent the rows of data. &amp;nbsp;In a custom list view you know you will be working with a collection of objects. &amp;nbsp;You need to define which elements of the data model you will want to display in each row. &amp;nbsp;In the code example below I'm defining four data elements: course, teeBox, par and holes. &amp;nbsp;I will specify these components in the custom ArrayAdapter class I create later.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;div class="reCodeBlock" style="outline-style: none; outline-width: initial; outline-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(127, 157, 185); border-right-color: rgb(127, 157, 185); border-bottom-color: rgb(127, 157, 185); border-left-color: rgb(127, 157, 185); overflow-y: auto; "&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 0px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;?&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;xml&lt;/code&gt;&amp;nbsp;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;version&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"1.0"&lt;/code&gt;&amp;nbsp;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;encoding&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"utf-8"&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;?&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 0px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TableLayout&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 6px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;xmlns:android&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"&lt;a href="http://schemas.android.com/apk/res/android" style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 6px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_width&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"fill_parent"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 6px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_height&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"50dip"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 6px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:stretchColumns&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"*"&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 6px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TableRow&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 18px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TextView&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:id&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@+id/course_item"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_width&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"140dip"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_height&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"wrap_content"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;style&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@style/ListsText"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:textColor&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@color/title_text"&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;/&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 18px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TextView&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:id&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@+id/teeBox_item"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_width&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"80dip"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_height&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"wrap_content"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;style&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@style/ListsText"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:textColor&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@color/title_text"&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;/&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 18px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TextView&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:id&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@+id/par_item"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_width&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"50dip"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_height&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"wrap_content"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;style&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@style/ListsText"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:textColor&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@color/title_text"&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;/&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 18px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TextView&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:id&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@+id/holes_item"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_width&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"50dip"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:layout_height&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"wrap_content"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;style&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@style/ListsText"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 24px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(128, 128, 128); "&gt;android:textColor&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;=&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: blue; "&gt;"@color/title_text"&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;/&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(248, 248, 248); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 12px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;/&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TableRow&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="outline-style: none; outline-width: initial; outline-color: initial; background-color: rgb(255, 255, 255); "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; "&gt;&lt;font style="outline-style: none; outline-width: initial; outline-color: initial; margin-left: 0px !important; "&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;lt;/&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 102, 153); font-weight: bold; "&gt;TableLayout&lt;/code&gt;&lt;code style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(0, 0, 0); "&gt;&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In your main activity class for the list screen you will need to define ListView, retrieve the list data and specify a new &amp;nbsp;Adapter to display the data. The code below shows all of this in one block. &amp;nbsp;We define a new ListView based on the courseListView layout and we use the courseService to retrieve a java.util.List of Course objects. &amp;nbsp;Finally we create a new ListAdapter using a custom adapter that specified the detail item's layout and the collection. &amp;nbsp;The adapter is then set on the ListView to link it to the main layout.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;ListView courseListView = (ListView) findViewById(R.id.courseListView);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;List&amp;lt;Course&amp;gt; courses = courseService.findAll();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;final ListAdapter adapter = &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;CourseAdaptor(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;, R.layout.course_item, courses);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;courseListView.setAdapter(adapter);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The key&amp;nbsp;component&amp;nbsp;to the code above is the custom AttayAdapter. &amp;nbsp;To display the data in the list exactly the way you want it to look, you need to create a custom adapter for the data model. &amp;nbsp;For this example we will create a constructor that takes a context, resource id and an array of objects. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The getView method needs to be&amp;nbsp;overridden&amp;nbsp;to return a new view that will represent a row of data. &amp;nbsp;In the getView method, we will get references to the TextViews defined in the custom layout we defined earlier. &amp;nbsp;Since we know the row id or position we are in the list, we get the associated row from the&amp;nbsp;collection&amp;nbsp;and map that data to the view. &amp;nbsp;Below is an example of that code.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000;"&gt;CourseAdaptor extends ArrayAdapter&amp;lt;Course&amp;gt; {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;int&lt;/code&gt; &lt;code style="color: #000;"&gt;resource;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #000;"&gt;CourseAdaptor(Context context, &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;int&lt;/code&gt; &lt;code style="color: #000;"&gt;resource, List&amp;lt;Course&amp;gt; objects) {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;super(context, resource, objects);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;.resource = resource;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;@Override&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #000;"&gt;View getView(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;int&lt;/code&gt; &lt;code style="color: #000;"&gt;position, View convertView, ViewGroup parent) {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;LinearLayout layout;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;Course course = getItem(position);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;String name = course.getName();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;String teebox = course.getTeeBox();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;String par = course.getPar()+&lt;/code&gt;&lt;code style="color: blue;"&gt;""&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;String holes = course.getHoles()+&lt;/code&gt;&lt;code style="color: blue;"&gt;""&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000;"&gt;(convertView == &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;null&lt;/code&gt;&lt;code style="color: #000;"&gt;) {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 36px !important; "&gt;&lt;code style="color: #000;"&gt;layout = &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;LinearLayout(getContext());&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 36px !important; "&gt;&lt;code style="color: #000;"&gt;String inflater = Context.LAYOUT_INFLATER_SERVICE;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 36px !important; "&gt;&lt;code style="color: #000;"&gt;LayoutInflater vi = (LayoutInflater)getContext().getSystemService(inflater);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 36px !important; "&gt;&lt;code style="color: #000;"&gt;vi.inflate(resource, layout, &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;true&lt;/code&gt;&lt;code style="color: #000;"&gt;);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;} &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;else&lt;/code&gt; &lt;code style="color: #000;"&gt;{&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 36px !important; "&gt;&lt;code style="color: #000;"&gt;layout = (LinearLayout)convertView;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;TextView nameView = (TextView)layout.findViewById(R.id.course_item);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;TextView teeboxView = (TextView)layout.findViewById(R.id.teeBox_item);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;TextView parView = (TextView)layout.findViewById(R.id.par_item);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;TextView holesView = (TextView)layout.findViewById(R.id.holes_item);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;nameView.setText(name);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;teeboxView.setText(teebox);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;parView.setText(par);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;holesView.setText(holes);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;return&lt;/code&gt; &lt;code style="color: #000;"&gt;layout;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Finally all we need to do is include the ListView in our main layout. &amp;nbsp;This is a fairly simple component to add to your main layout since all the details are defined in the included layout.&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code&gt;&lt;div style="background-color: rgb(255, 255, 255); "&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/div&gt;&lt;div style="background-color: rgb(255, 255, 255); "&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;/div&gt;&lt;div style="background-color: rgb(255, 255, 255); "&gt;&amp;nbsp; &amp;nbsp; android:orientation="vertical"&amp;gt;&lt;/div&gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;&amp;nbsp; &amp;nbsp; &amp;lt;&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;ListView&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #808080;"&gt;android:id&lt;/code&gt;&lt;code style="color: #000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"@+id/courseListView"&lt;/code&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #808080;"&gt;android:layout_width&lt;/code&gt;&lt;code style="color: #000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"fill_parent"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #808080;"&gt;android:layout_height&lt;/code&gt;&lt;code style="color: #000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"wrap_content"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #808080;"&gt;android:cacheColorHint&lt;/code&gt;&lt;code style="color: #000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"@color/background2"&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;&amp;nbsp; &amp;nbsp; /&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I hope this use case was clear enough for people to understand. &amp;nbsp;In the long run this is probably a very common pattern in Android and a very simple one to execute. &amp;nbsp;The use case does require an Activity class, an implementation of ArrayAdapter and a pair of layout xml files but most of the hard stuff is abstracted away for you. &amp;nbsp;Please comment or email me if you have any questions.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-06-06T13:30:00Z</dc:date></item><item rdf:about="http://voghan.com/2011/06/01/getting-paid.aspx?ref=rss"><title>Getting Paid</title><link>http://voghan.com/2011/06/01/getting-paid.aspx?ref=rss</link><description>&lt;div style="font-family: 'Times New Roman'; font-size: medium; "&gt;In the mobile space there is an arms race, its a race to get the most developers supporting a specific platform. The current platforms of choice are Apple's &lt;span class="RadEWrongWord" id="RadESpellError_0"&gt;iOS&lt;/span&gt; and Google's Android OS for mobile platforms. Apps are the life blood of the mobile business because Apple and Google make more revenue off an app bought in their respective store than by selling the actual phones. Having a large user base leads to more app sales and&amp;nbsp; more continuous revenue for the platform owner.&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; "&gt;The article linked below from Fortune is a bit of a &lt;span class="RadEWrongWord" id="RadESpellError_2"&gt;FUD&lt;/span&gt; piece about app sales on the Android market. &amp;nbsp;It is very clear that the Android market places a little more emphasis on free apps over paid apps. &amp;nbsp;Consumers rather have a free app and there are more free apps in the Android market. &amp;nbsp;Apple supporters may say that this means there are more lower quality apps in the Android market because of the disparity. &amp;nbsp;Fact is developers are learning a free app can make you as much money as a paid app.&lt;br clear="none"&gt;&lt;br clear="none"&gt;The only real difference with Google and Apple in the mobile space is that Google makes money by sells ads. &amp;nbsp;Google provides tools to developers that allow then to display ads in your iPhone, Android and Windows phone. So for Google, a free app is an opportunity to be a app supported by Google ads. This is a significant difference between Apple and Google when it comes to revenue from apps. Apple and Google makes revenue on each sale of a paid app from their marketplaces but in a free app Google can make money on each ad displayed for as long as that app is in use.&amp;nbsp; It makes you wonder, will you make more revenue on that single sale or on that reoccurring ad revenue.&lt;br clear="none"&gt;&lt;br clear="none"&gt;That is the question I ask myself a lot lately. Would I benefit from merging my app into one free app on Android and building a free version on Windows and iPhone platforms? More free apps with ads would mean more revenue to me, the developer. I tend to believe that no one developer is getting rich building apps anymore. &amp;nbsp;It's a corporate world now offering free apps that drive you to their website.&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; "&gt;Source:&lt;/div&gt;&lt;div style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;http://www.&lt;span class="RadEWrongWord" id="RadESpellError_5"&gt;intomobile&lt;/span&gt;.com/2011/05/27/itunes-app-store-more-&lt;span class="RadEWrongWord" id="RadESpellError_6"&gt;paidapp&lt;/span&gt;-friendly-than-android-market/&lt;/div&gt;&lt;div&gt;&lt;a href="http://tech.fortune.cnn.com/2011/05/27/why-its-harder-to-make-money-on-android-than-on-apples-ios/" _mce_href="http://tech.fortune.cnn.com/2011/05/27/why-its-harder-to-make-money-on-android-than-on-apples-ios/" target="_blank"&gt;http://tech.fortune.&lt;span class="RadEWrongWord" id="RadESpellError_7"&gt;cnn&lt;/span&gt;.com/2011/05/27/why-its-harder-to-make-money-on-android-than-on-apples-&lt;span class="RadEWrongWord" id="RadESpellError_8"&gt;ios&lt;/span&gt;/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-06-02T03:20:00Z</dc:date></item><item rdf:about="http://voghan.com/2011/05/27/event-tracking-with-analytics.aspx?ref=rss"><title>Event Tracking with Analytics</title><link>http://voghan.com/2011/05/27/event-tracking-with-analytics.aspx?ref=rss</link><description>&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;Now that you have Analytics setup in your Android app, you might want to track some specific user actions. &amp;nbsp;You might have some features that don't run on a screen or maybe you want to see how often a specific menu option is selected. &amp;nbsp;Google Analytics has the ability to track specific events in side your application.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;The event tracking is very easy to setup within your app assuming you've setup Analytics already. &amp;nbsp;All you need to do is call the track() method on the GoogleAnalyticsTracker instance you have running in your Activity class. &amp;nbsp;The track method takes four paramaters: a category, action, label and a value. &amp;nbsp;The Analytics web site will sort the events by category then action or label. &amp;nbsp;I have all my button clicks setup as 'UI_ACTION' category then each button name is the action and the label is the local class name of the activity. &amp;nbsp;This allows me to see how often a button is clicked on a specific screen and how often a button is clicked overall.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;onHomeClick(View v) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;tracker.trackEvent(&lt;/code&gt;&lt;code style="color: blue;"&gt;"ui_interaction"&lt;/code&gt;&lt;code style="color: #000;"&gt;, &lt;/code&gt;&lt;code style="color: blue;"&gt;"onHomeClick"&lt;/code&gt;&lt;code style="color: #000;"&gt;, &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;.getLocalClassName(), 0);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000;"&gt;(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt; &lt;code style="color: #000;"&gt;instanceof DashboardActivity) {&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 24px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;return&lt;/code&gt;&lt;code style="color: #000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;final Intent intent = &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000;"&gt;Intent(&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;, DashboardActivity.&lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;class&lt;/code&gt;&lt;code style="color: #000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #000;"&gt;intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;span style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style=" margin-left: 12px !important;"&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;.startActivity(intent);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;span style=" "&gt;&lt;span style=" margin-left: 0px !important;"&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;So far I've found this helpful to see what functionality is actually being used in my app. &amp;nbsp;I've found out how users are navigating throughout the application. &amp;nbsp;It's find of nice to see which features are being under utilized as well. &amp;nbsp;Gathering this information will help you see which features need improvement and which ones you might want to eliminate.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/mobile/analytics/docs/android/" _mce_href="http://code.google.com/mobile/analytics/docs/android/" target="_blank"&gt;http://code.google.com/mobile/analytics/docs/android/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:subject>Development</dc:subject><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-05-27T13:00:00Z</dc:date></item><item rdf:about="http://voghan.com/2011/05/25/starting-a-mobile--business.aspx?ref=rss"><title>Starting a mobile  business</title><link>http://voghan.com/2011/05/25/starting-a-mobile--business.aspx?ref=rss</link><description>&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;Over the past year I've been starting my own side business developing mobile applications. Over the last year I've done a lot to make it work and I've made a few mistakes. I'm going to use this blog post to talk about what I didn't know I then that I know now.&lt;br&gt;&lt;br&gt;Identity. This is extremely important. You need to create a seperate identity for your business. That means a web site shouldn't be your personal blog. Your company email account shouldn't be your gmail account. You should setup an identity just for your business. Google and Amazon are places you've already mist likely have accounts setup. Do you want to be a one person company? If not then you probably shouldn't tie your personal gmail account to your app market account unless you want your employees to see your market purchases like apps, books and movie rentals. Think up a company name then create a gmail account, twitter account, facebook page and web site. You'd be surprised how annoying it is to see comment spam emails from your business web site in your personal email account. I know I'm happy all the app store spam emails go to my business email account.&lt;br&gt;&lt;br&gt;Have a plan. Seems simple and not even a tip but it is important. The plan should be simple and easy to track. I have several... seriously. I use an app to track all my crazy ideas. I list out improvements I want to make then cross them out. I even sometimes give tasks complete by dates. I used to always fill out these binders with notes and features. Now I use a note app and use tags to organize them. I find this best to help manage my ideas. Some ideas are larger than others and just require more time to mature into a viable solution.&lt;br&gt;&lt;br&gt;Beta.&amp;nbsp; I'm a big fan of rolling out your app to a small audiance first. My advice is roll out a beta with its own beta package name to make sure it works and you don't get the dredded one star review because you never tried your app in landscape. Test the app in a temporary package name then when you are ready release under a new name. You can notify users of the new version and get them to migrate over to the final version.&lt;br&gt;&lt;br&gt;Tracking. Get an analytics tool up front. I love my google analytics. It shows me the features users love and the ones they ignore. No need to spend time improving a feature no one ever uses. Its fun to see people use a feature I thought wouldn't be of value. Knowledge is power. Track your web site as well as your app to see what's used.&lt;br&gt;&lt;br&gt;Communicate. I have a blog and a twitter account I use to announce updates. Links to the blog are in the market so people can view research the developer. I try to communicate new features and market updates on the blog and via twitter. I've gotten emails and comments on the blog asking for help and for new features. I try to reply immediately and be as helpful as possible.&lt;br&gt;&lt;br&gt;Innovate. The goal is to be always looking for ways to I improve. Over the past year I've pushed possibly ten or twelve updates of my app. The only screens that haven't changed are the list screens for courses and rounds. I think the app is vastly improved and hope people enjoy the new features. There are always more apps coming out and its wise to make improvements to continue to compete.&lt;/div&gt;&lt;/div&gt;</description><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-05-26T03:29:28Z</dc:date></item><item rdf:about="http://voghan.com/2011/05/21/analytics-for-android.aspx?ref=rss"><title>Analytics for Android</title><link>http://voghan.com/2011/05/21/analytics-for-android.aspx?ref=rss</link><description>&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;Every implement some new functionality in your app but wonder if your users are actually using that feature? &amp;nbsp;Ever add menu items and wonder if your users are aware they are there? &amp;nbsp;These are a couple of the questions I was asking myself on my android app. &amp;nbsp;I had spent 40 hours implmenting a new feature that I wasn't sure anyone would actually use. &amp;nbsp;I was also tempted to eliminate a few menu options because I wasn't sure they were being used. &amp;nbsp;To answer these questions I added Google Analytics to my android app.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;I wasn't really aware that Google Analytics had hooks into Android until I saw it mentioned in a Google IO 2001 presentation about growing a mobile business. &amp;nbsp;I've used Google Analytics in the past on my blog to track articles read, unique visitors and see where traffic was originateing from. &amp;nbsp;I ended up watching the IO session 'Optimizing Android Apps with Google Analytics' on YouTube. &amp;nbsp;This session will show you everything you need to add analytics tracking into your Android application.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;For simplicity I'll go over what I did to setup analytics and answer soem of the gotchas that I expereienced. &amp;nbsp;To get started, visit the Google Code page Analytics to get the SDK and jars you'll need to add to your project. &amp;nbsp;Your app will have to add two new permissions: android.permission.INTERNET and android.permission.ACCESS_NETWORK_STATE. &amp;nbsp;Both of these are necessary to push that data gathered to the Analytics servers.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;To start gathering data you will need to create an instance of GoogleAnalyticsTracker in your Activity class. &amp;nbsp;They recommend starting the tracker in your onCreate() method by calling tracker.start("YOUR ANALYTICS ID", context). &amp;nbsp;This will start the data tracking for page views of this activity. &amp;nbsp;You will need to call the stop() method on the tracker in your onDestroy() method. &amp;nbsp;Now you have created the mechanism to capture the data but you still need to send it to Anaylicts manually.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;To send data manually you will need to call &amp;nbsp;the dispatch() method on GoogleAnalyticsTracker. &amp;nbsp;The start() method does have an option paramater to dispatch your data at a set interval but sending data too often will only hurt the battery life of the phone. &amp;nbsp;You don't want your app killing the phone battery, leave that to the Google applications. &amp;nbsp;What I recommend is dispatching only on a specific button click or within the onDestry() method. &amp;nbsp;For testing you can specify an interval but once you know it's working you probably don't want it dispatching that often. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;How I implemented this was by creating my own parent Activity class that implement the onCreate() and onDestroy() methods. &amp;nbsp;I then extend this class in all of my activities. &amp;nbsp;This allows the Analytics code to be in one place and allows me to reference the&amp;nbsp;GoogleAnalyticsTracker in the child classes.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="reCodeBlock" style="border:solid 1px #7f9db9;width:;height:;overflow-y:auto;"&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000;"&gt;TrackedActivity extends Activity {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #000;"&gt;GoogleAnalyticsTracker tracker;&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;@Override&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;onCreate(Bundle savedInstanceState) {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;super.onCreate(savedInstanceState);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;setContentView(R.layout.dashboard);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;tracker = GoogleAnalyticsTracker.getInstance();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;tracker.start(&lt;/code&gt;&lt;code style="color: blue;"&gt;"UA-YOUR-ACCOUNT-HERE"&lt;/code&gt;&lt;code style="color: #000;"&gt;, &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #008200;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tracker.setDebug(true);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #008200;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tracker.setDryRun(true);&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;@Override&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;onResume() {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;super.onResume();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;tracker.trackPageView(&lt;/code&gt;&lt;code style="color: blue;"&gt;"/"&lt;/code&gt; &lt;code style="color: #000;"&gt;+ &lt;/code&gt;&lt;code style="color: #069;font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000;"&gt;.getLocalClassName());&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;@Override&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #069;font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #069;font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000;"&gt;onDestroy() {&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;super.onDestroy();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;tracker.dispatch();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 24px !important; "&gt;&lt;code style="color: #000;"&gt;tracker.stop();&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #fff;"&gt;&lt;font style=" "&gt;&lt;code style=" "&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;font style="margin-left: 12px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=" background-color: #F8F8F8;"&gt;&lt;font style=" "&gt;&lt;font style="margin-left: 0px !important; "&gt;&lt;code style="color: #000;"&gt;}&lt;/code&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;Hopefully now if you are slightly interested in gathering information about how your application is used, you'll be able to easily add Google Analytics. &amp;nbsp;I found this amazingly easy to implement in my own applicaion. &amp;nbsp;It's great to see what screens are getting the most views and which parts of the app are seldomly used. &amp;nbsp;I can now see that no one has goen to my Help screen yet for instance. &amp;nbsp;I can also see that my app is being used in South Korea, Ireland and Argentina. &amp;nbsp;That is sorta &amp;nbsp;cool.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/mobile/analytics/docs/android/" _mce_href="http://code.google.com/mobile/analytics/docs/android/" target="_blank"&gt;http://code.google.com/mobile/analytics/docs/android/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:subject>Development</dc:subject><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-05-22T01:56:00Z</dc:date></item><item rdf:about="http://voghan.com/2011/05/18/refactoring-handicap-part-1.aspx?ref=rss"><title>Refactoring Handicap, Part 1</title><link>http://voghan.com/2011/05/18/refactoring-handicap-part-1.aspx?ref=rss</link><description>&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;In preperation for moving some of the data storage for Handicap into the cloud, I've started refactoring the code base. &amp;nbsp;I never implmented a business tier between my activity code and the data access code in the past. &amp;nbsp;For this app I felt it was unneccessary becuase that business tier would be extremely thin. &amp;nbsp;The real business logic (handicapping logic) had already been broken into it's own class.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;Ideally this will allow me to simplify my testing and allow me to switch backends easily. &amp;nbsp;The amount of work isn't horrible but it has forced me to make a couple adjustments to how the code works. &amp;nbsp;The majority of the coding has been creating interfaces, implementing those interfaces then replacing the references to the data access classes with the new services. &amp;nbsp;The coding has been fairly simple.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;Although I was able to make most of the code changes in a pair of three hour sessions I have run into a couple problems. &amp;nbsp;In my original design I relied on a few list views that utilized the cursor to display data. &amp;nbsp;I've been forced to create a couple custom ArrayAdapters to handle pojo instead of a cursor. &amp;nbsp;This new adapter allows me to take the pojo and map specific elements to the display. &amp;nbsp;This was fairly easy to accomplish because i've done this before in excerises from &amp;lt;Link&amp;gt; &lt;a href="http://www.amazon.com/Professional-Android-Application-Development-Programmer/dp/0470344717/ref=ntt_at_ep_dpt_2" target="_blank" class=""&gt;Reto Meier's book&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-05-19T02:52:00Z</dc:date></item><item rdf:about="http://voghan.com/2011/03/22/a-year-in-review-of-my-android-development.aspx?ref=rss"><title>A Year in Review of My Android Development</title><link>http://voghan.com/2011/03/22/a-year-in-review-of-my-android-development.aspx?ref=rss</link><description>&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;&lt;div style="color: rgb(0, 0, 0); margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;div&gt;It has been almost a year now since I took that week off from work to learn Android development.&amp;nbsp; Over the past year I have published two veriations of the same app, added functionality, supported a few users and have constantly thought about how to make the application better. I have learned how to develop applications in android the hard way, by trial and error. It has been an interesting journey that has helped me more than I can express.&amp;nbsp;&lt;br clear="none"&gt;&lt;br clear="none"&gt;I just recently published version 2.0 of Handicap.&amp;nbsp; Over the last year there hasn't been a single screen that has gone untouched by me.&amp;nbsp; I started out using a tabbed layout with just the basic stats and functionality. I gradually started thinking of ways to improve the app and started planning out new features. I have created something I am proud to call my own but know there is so much more potential.&lt;br clear="none"&gt;&lt;br clear="none"&gt;Developing an app by myself has also been an interesting challenge. I've always had the luxury of a quality assurance team to test my applications in the past. Developers tend to follow the happy path when testing and don't worry about the craziness of an end user. Why would anyone purposefully try to break an app? Why would anyone hold the phone in landscape? &amp;nbsp;Crazy end users!.&lt;br clear="none"&gt;&lt;br clear="none"&gt;Over the last year so much has changed in android. Most phones are now 4" or larger providing more screen space for components. You really don't have to worry about screen space anymore when developing apps. Now you have tablets with even larger screens to fill up. It is an interesting problem to have. &amp;nbsp;With Tablets now making a strong showing you can start building some seriously large applications for these devices. &amp;nbsp;A fully featured website can now be localized to one device if one chooses to do so. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br clear="none"&gt;&lt;/div&gt;&lt;div&gt;Over the next year I hope to start developing more golf related apps. &amp;nbsp;I'd like to take my current app to the next level by adding a ton more functionality around stats and how your trending on the golf course. &amp;nbsp;Maybe have some real reasons to buy a true tablet version of the app that can create graphs and utilize that larger screen. &amp;nbsp;I also want to explore the whole check-in fad by adding another app to the market. &amp;nbsp;Maybe I'll have more on that topic later.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><dc:subject>Development</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2011-03-22T05:00:00Z</dc:date></item><item rdf:about="http://voghan.com/2010/12/30/quick-impressions-of-nexus-s.aspx?ref=rss"><title>Quick Impressions of Nexus S</title><link>http://voghan.com/2010/12/30/quick-impressions-of-nexus-s.aspx?ref=rss</link><description>&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;I got the please of handling a Nexus S over the holiday weekend when my sister brought hers over. &amp;nbsp;The Nexus S is a Samsung Galaxy style phone with slight adjustments and tweaks that make it Google’s flagship device for 2011. &amp;nbsp;The phone features the latest android OS, near field communication and non-removable storage. &amp;nbsp;Three features that make this phone very unique compared to devices today but not likely going forward.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;The first thing I noticed about the phone was it’s shape and weight. &amp;nbsp;Compared to my Fascinate the Nexus S is a little heavier and defiantly curvier. &amp;nbsp;The edges on the four corners of the phone are smoother which gives the phone a slightly smaller look even through they are almost the same size. &amp;nbsp;The curved screen on the Nexus S is not very noticeable but with the curvature in the back of the phone, it gives the phone a rounded feel. &amp;nbsp;The phone is defiantly not another black slab but sleek rounded device.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;From a software perspective the phone has a UI you’d expect out of a Nexus device. &amp;nbsp;The custom UI has the five screens and all the other similar features as home screens of the Nexus One. &amp;nbsp;The phone is snappy and opens apps very quickly. &amp;nbsp;It does a great job of handling multiple downloads and installs as well. &amp;nbsp;The main UI changes feel like novelty items like the 4D add drawer, the light when you hit the top or bottom of a list or how the screen fades out when you lock your phone’s screen. &amp;nbsp;I suspect the real changes in Gingerbread (Android 2.3) are all under the covers with faster multi-processing and new APIs.&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As a phone you can look at the Nexus One and say it was the top of the line phone that lead what other android phones would model in 2010. &amp;nbsp;I tend to think the same is probably what will happen with the Nexus S. &amp;nbsp;If you are in T-Mobile or looking to switch carriers you will do well with this phone. &amp;nbsp;The Nexus S may not be the best android phone available at the end of next year but it is clearly the best android phone today.&lt;/span&gt;&lt;/div&gt;</description><dc:subject>Phones</dc:subject><dc:subject>Android</dc:subject><dc:creator>Brian Vaughn</dc:creator><dc:date>2010-12-31T02:38:00Z</dc:date></item></rdf:RDF>
