<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Passion &#187; Mobile Development</title>
	<atom:link href="http://www.softwarepassion.com/category/mobile_development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.softwarepassion.com</link>
	<description>by Krzysztof Grajek</description>
	<lastBuildDate>Thu, 18 Mar 2010 17:46:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Android Series: GET, POST and Multipart POST requests</title>
		<link>http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/</link>
		<comments>http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:59:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Mobile Development]]></category>

		<guid isPermaLink="false">http://www.softwarepassion.com/?p=389</guid>
		<description><![CDATA[Today I will describe shortly how to execute http GET and POST request on Android platform.
The code is very simple and straightforward, for post request with attachement, you would have to add apache-mime4j-0.6.jar and httpmime-4.0.1.jar to your build path.
HTTP GET




try &#123;
&#160; &#160; &#160; &#160; HttpClient client = new DefaultHttpClient&#40;&#41;; &#160;
&#160; &#160; &#160; &#160; String getURL [...]]]></description>
			<content:encoded><![CDATA[<p>Today I will describe shortly how to execute http GET and POST request on Android platform.<br />
The code is very simple and straightforward, for post request with attachement, you would have to add apache-mime4j-0.6.jar and httpmime-4.0.1.jar to your build path.</p>
<p><strong>HTTP GET</strong><br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; HttpClient client <span class="sy0">=</span> <span class="kw1">new</span> DefaultHttpClient<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getURL <span class="sy0">=</span> <span class="st0">&quot;http://www.google.com&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; HttpGet get <span class="sy0">=</span> <span class="kw1">new</span> HttpGet<span class="br0">&#40;</span>getURL<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; HttpResponse responseGet <span class="sy0">=</span> client.<span class="me1">execute</span><span class="br0">&#40;</span>get<span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; HttpEntity resEntityGet <span class="sy0">=</span> responseGet.<span class="me1">getEntity</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>resEntityGet <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//do something with the response</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;GET RESPONSE&quot;</span>,EntityUtils.<span class="me1">toString</span><span class="br0">&#40;</span>resEntityGet<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<p><strong>HTTP POST</strong><br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; HttpClient client <span class="sy0">=</span> <span class="kw1">new</span> DefaultHttpClient<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> postURL <span class="sy0">=</span> <span class="st0">&quot;http://somepostaddress.com&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; HttpPost post <span class="sy0">=</span> <span class="kw1">new</span> HttpPost<span class="br0">&#40;</span>postURL<span class="br0">&#41;</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; List<span class="sy0">&lt;</span>NameValuePair<span class="sy0">&gt;</span> params <span class="sy0">=</span> <span class="kw1">new</span> ArrayList<span class="sy0">&lt;</span>NameValuePair<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.<span class="me1">add</span><span class="br0">&#40;</span><span class="kw1">new</span> BasicNameValuePair<span class="br0">&#40;</span><span class="st0">&quot;user&quot;</span>, <span class="st0">&quot;kris&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params.<span class="me1">add</span><span class="br0">&#40;</span><span class="kw1">new</span> BasicNameValuePair<span class="br0">&#40;</span><span class="st0">&quot;pass&quot;</span>, <span class="st0">&quot;xyz&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UrlEncodedFormEntity ent <span class="sy0">=</span> <span class="kw1">new</span> UrlEncodedFormEntity<span class="br0">&#40;</span>params,HTTP.<span class="me1">UTF_8</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; post.<span class="me1">setEntity</span><span class="br0">&#40;</span>ent<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpResponse responsePOST <span class="sy0">=</span> client.<span class="me1">execute</span><span class="br0">&#40;</span>post<span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpEntity resEntity <span class="sy0">=</span> responsePOST.<span class="me1">getEntity</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>resEntity <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;RESPONSE&quot;</span>,EntityUtils.<span class="me1">toString</span><span class="br0">&#40;</span>resEntity<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p><strong>HTTP POST with File attachment</strong><br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> file <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a><span class="br0">&#40;</span><span class="st0">&quot;path/to/your/file.txt&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HttpClient client <span class="sy0">=</span> <span class="kw1">new</span> DefaultHttpClient<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> postURL <span class="sy0">=</span> <span class="st0">&quot;http://someposturl.com&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HttpPost post <span class="sy0">=</span> <span class="kw1">new</span> HttpPost<span class="br0">&#40;</span>postURL<span class="br0">&#41;</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; &nbsp;FileBody bin <span class="sy0">=</span> <span class="kw1">new</span> FileBody<span class="br0">&#40;</span>file<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;MultipartEntity reqEntity <span class="sy0">=</span> <span class="kw1">new</span> MultipartEntity<span class="br0">&#40;</span>HttpMultipartMode.<span class="me1">BROWSER_COMPATIBLE</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;reqEntity.<span class="me1">addPart</span><span class="br0">&#40;</span><span class="st0">&quot;myFile&quot;</span>, bin<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp;post.<span class="me1">setEntity</span><span class="br0">&#40;</span>reqEntity<span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;HttpResponse response <span class="sy0">=</span> client.<span class="me1">execute</span><span class="br0">&#40;</span>post<span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;HttpEntity resEntity <span class="sy0">=</span> response.<span class="me1">getEntity</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>resEntity <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;RESPONSE&quot;</span>,EntityUtils.<span class="me1">toString</span><span class="br0">&#40;</span>resEntity<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/android-series-get-post-and-multipart-post-requests/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Android Series: Using GPS data</title>
		<link>http://www.softwarepassion.com/android-series-using-gps-data/</link>
		<comments>http://www.softwarepassion.com/android-series-using-gps-data/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 12:26:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Mobile Development]]></category>

		<guid isPermaLink="false">http://www.softwarepassion.com/?p=386</guid>
		<description><![CDATA[In this tutorial i will show you how to quickly get the gps data using your android device version 1.6+.
All you have to do is to implement one interface and acquire LocationMangager from the adnroid system service.
public class LocationExampleAct extends Activity implements LocationListener&#123;


&#160; &#160; private double latitude;
&#160; &#160; private double longitude;
&#160; &#160; private LocationManager locMgr [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial i will show you how to quickly get the gps data using your android device version 1.6+.</p>
<p>All you have to do is to implement one interface and acquire LocationMangager from the adnroid system service.</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">public</span> <span class="kw1">class</span> LocationExampleAct <span class="kw1">extends</span> Activity <span class="kw1">implements</span> LocationListener<span class="br0">&#123;</span><br />
<br />
<br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">double</span> latitude<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">double</span> longitude<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> LocationManager locMgr <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co3">/** Called when the activity is first created. */</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onCreate<span class="br0">&#40;</span>Bundle savedInstanceState<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span>.<span class="me1">onCreate</span><span class="br0">&#40;</span>savedInstanceState<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setContentView<span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">main</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; locationTxt <span class="sy0">=</span> <span class="br0">&#40;</span>TextView<span class="br0">&#41;</span>findViewById<span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">location_id</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; locMgr <span class="sy0">=</span> <span class="br0">&#40;</span>LocationManager<span class="br0">&#41;</span><span class="kw1">this</span>.<span class="me1">getSystemService</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acontext+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Context</span></a>.<span class="me1">LOCATION_SERVICE</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; locMgr.<span class="me1">requestLocationUpdates</span><span class="br0">&#40;</span>LocationManager.<span class="me1">GPS_PROVIDER</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="kw1">this</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onLocationChanged<span class="br0">&#40;</span>Location location<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">latitude</span> <span class="sy0">=</span> location.<span class="me1">getLatitude</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">longitude</span> <span class="sy0">=</span> location.<span class="me1">getLongitude</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">locationTxt</span>.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Location: &quot;</span><span class="sy0">+</span><span class="kw1">this</span>.<span class="me1">latitude</span> <span class="sy0">+</span><span class="st0">&quot; : &quot;</span> <span class="sy0">+</span> <span class="kw1">this</span>.<span class="me1">longitude</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;Location change&quot;</span>,<span class="st0">&quot;&quot;</span><span class="sy0">+</span>latitude<span class="sy0">+</span> <span class="st0">&quot; : &quot;</span><span class="sy0">+</span>longitude<span class="br0">&#41;</span> <span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onProviderDisabled<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> provider<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onProviderEnabled<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> provider<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onStatusChanged<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> provider, <span class="kw4">int</span> status, Bundle extras<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/android-series-using-gps-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android Series: Parsing JSON data with GSON</title>
		<link>http://www.softwarepassion.com/android-series-parsing-json-data-with-gson/</link>
		<comments>http://www.softwarepassion.com/android-series-parsing-json-data-with-gson/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 11:56:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Mobile Development]]></category>

		<guid isPermaLink="false">http://www.softwarepassion.com/?p=377</guid>
		<description><![CDATA[Today I will describe how to parse json data using Gson open source library and how to convert it at the same time to java objects.
This is a typical cookbook example and should be very easy to follow.




1. Create an Android application with one activity, name it as you wish, if you are doing it [...]]]></description>
			<content:encoded><![CDATA[<p>Today I will describe how to parse json data using Gson open source library and how to convert it at the same time to java objects.<br />
This is a typical cookbook example and should be very easy to follow.<br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
1. Create an Android application with one activity, name it as you wish, if you are doing it in eclipse all the basic stuff will be generated for you which is exactly what we need.<br />
2. Find an example url which  responds in JSON, I have used Twitter Trends found here: <a href="http://search.twitter.com/trends.json">http://search.twitter.com/trends.json</a><br />
The example response looks like this:</p>
<div class="codecolorer-container html4strict " style="overflow:auto;white-space:nowrap;width:535px"><div class="html4strict codecolorer" style="font-family:Monaco,Lucida Console,monospace">{&quot;as_of&quot;:&quot;Thu, 25 Feb 2010 11:30:17 +0000&quot;,&quot;trends&quot;:[{&quot;name&quot;:&quot;#nowplaying&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%23nowplaying&quot;},{&quot;name&quot;:&quot;#nothingworsethan&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%23nothingworsethan&quot;},{&quot;name&quot;:&quot;Dubai Mall&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%22Dubai+Mall%22&quot;},{&quot;name&quot;:&quot;iPad Gets&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%22iPad+Gets%22&quot;},{&quot;name&quot;:&quot;#SuperJuniorTrot&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%23SuperJuniorTrot&quot;},{&quot;name&quot;:&quot;Justin Bieber&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%22Justin+Bieber%22&quot;},{&quot;name&quot;:&quot;Click&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=Click&quot;},{&quot;name&quot;:&quot;Jaebum&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=Jaebum&quot;},{&quot;name&quot;:&quot;#tosavemoney&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=%23tosavemoney&quot;},{&quot;name&quot;:&quot;Protection&quot;,&quot;url&quot;:&quot;http://search.twitter.com/search?q=Protection&quot;}]}</div></div>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
As you can see this json data contains date attribute called &#8216;as_of&#8217; as well as array of items, each consisting of name and url attributes.<br />
We will create two simple java classes wich will hold that information.<br />
First one is TwitterTrends.java</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">package</span> <span class="co2">com.softwarepassion.jsonexample</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">java.util.Date</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">java.util.List</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> TwitterTrends <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> as_of<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> List<span class="sy0">&lt;</span>TwitterTrend<span class="sy0">&gt;</span> trends<span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getAs_of<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> as_of<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setAs_of<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> asOf<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; as_of <span class="sy0">=</span> asOf<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> List<span class="sy0">&lt;</span>TwitterTrend<span class="sy0">&gt;</span> getTrends<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> trends<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setTrends<span class="br0">&#40;</span>List<span class="sy0">&lt;</span>TwitterTrend<span class="sy0">&gt;</span> trends<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">trends</span> <span class="sy0">=</span> trends<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
<span class="br0">&#125;</span></div></div>
<p>And the second one is a simple TwitterTrend.java</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">package</span> <span class="co2">com.softwarepassion.jsonexample</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> TwitterTrend <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> name<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> url<span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getName<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> name<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setName<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> name<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">name</span> <span class="sy0">=</span> name<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getUrl<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> url<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setUrl<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> url<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">url</span> <span class="sy0">=</span> url<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
<p>TwitterTrends contains a list of TwitterTrend objects, both of them are simple beans and are very similar to the json response if you look closely <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Now the fun part begins.</p>
<p>Download the Gson library from <a href="http://code.google.com/p/google-gson/">http://code.google.com/p/google-gson/</a> and add it to your java build path in eclipse.<br />
Once you do that, you can now transform your json response to Java object on Android Platform:<br />
Get the response as InputStream:<br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">InputStream</span></a> getJSONData<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> url<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; DefaultHttpClient httpClient <span class="sy0">=</span> <span class="kw1">new</span> DefaultHttpClient<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; URI uri<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">InputStream</span></a> data <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uri <span class="sy0">=</span> <span class="kw1">new</span> URI<span class="br0">&#40;</span>url<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpGet method <span class="sy0">=</span> <span class="kw1">new</span> HttpGet<span class="br0">&#40;</span>uri<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HttpResponse response <span class="sy0">=</span> httpClient.<span class="me1">execute</span><span class="br0">&#40;</span>method<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data <span class="sy0">=</span> response.<span class="me1">getEntity</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">getContent</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> data<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p>Then use that input stream to create your java objects:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">public</span> <span class="kw4">void</span> runJSONParser<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;MY INFO&quot;</span>, <span class="st0">&quot;Json Parser started..&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Gson gson <span class="sy0">=</span> <span class="kw1">new</span> Gson<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Areader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Reader</span></a> r <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Ainputstreamreader+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">InputStreamReader</span></a><span class="br0">&#40;</span>getJSONData<span class="br0">&#40;</span><span class="st0">&quot;http://search.twitter.com/trends.json&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;MY INFO&quot;</span>, r.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; TwitterTrends objs <span class="sy0">=</span> gson.<span class="me1">fromJson</span><span class="br0">&#40;</span>r, TwitterTrends.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;MY INFO&quot;</span>, <span class="st0">&quot;&quot;</span><span class="sy0">+</span>objs.<span class="me1">getTrends</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span>TwitterTrend tr <span class="sy0">:</span> objs.<span class="me1">getTrends</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;TRENDS&quot;</span>, tr.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">&quot; - &quot;</span> <span class="sy0">+</span> tr.<span class="me1">getUrl</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">catch</span><span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> ex<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ex.<span class="me1">printStackTrace</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p>Easy ha!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/android-series-parsing-json-data-with-gson/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Android Series: Custom ListView items and adapters</title>
		<link>http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/</link>
		<comments>http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/#comments</comments>
		<pubDate>Wed, 20 May 2009 11:24:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mobile Development]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://www.softwarepassion.com/?p=189</guid>
		<description><![CDATA[<span style="max-width: 100px; display: block; float: left;"><img src="http://www.softwarepassion.com/wp-content/uploads/android.png" alt="android" title="android"/></span><span style="margin: 0px; padding-left: 10px; display: block; max-width: 370px; float: left;">This is a short tutorial on how to populate your android list view, with data downloaded from the internet or other sources, using ArrayAdapter. ListView items view is declared in a separate XML file and displayed using custom adapter class.</span>]]></description>
			<content:encoded><![CDATA[<p>This is a short tutorial on how to populate your android list view, with data downloaded from the internet or other sources, using ArrayAdapter. ListView items view is declared in a separate XML file and displayed using custom adapter class.<br />
First things first, so go ahead and create a new project using Eclipse equipped with ADT plugin.<br />
The project described below assumes you have a list of objects created, this can be either downloaded from the internet as XML and parsed to create ArrayList of your custom objects or anything you imagine. I will not go into details on this tutorial how to create such an ArrayList but your imagination is the limit. Parsing XML downloaded from the net will be covered in the next tutorial coming up soon.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Click File -> New -> Project and select the &#8216;Android Project&#8217; wizard:</p>
<p><a href="http://www.softwarepassion.com/wp-content/uploads/android11.png" rel="lightbox[189]"><img src="http://www.softwarepassion.com/wp-content/uploads/android11-300x235.png" alt="android11" title="android11" width="300" height="235" class="aligncenter size-medium wp-image-199" /></a></p>
<p>Click next and fill out the next screen with the following values:</p>
<p><a href="http://www.softwarepassion.com/wp-content/uploads/android21.png" rel="lightbox[189]"><img src="http://www.softwarepassion.com/wp-content/uploads/android21-247x300.png" alt="android21" title="android21" width="247" height="300" class="aligncenter size-medium wp-image-201" /></a></p>
<p>Once you have filled out all the necessary data you can click finish.<br />
Your new project has just been created. Now lets modify it a bit to display our custom made list.<br />
Open up SoftwarePassionView.java in the eclipse editor and change the class file to the following:</p>
<p>1. Define necessary member variables we will use later in our class</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">private</span> ProgressDialog m_ProgressDialog <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <span class="kw1">private</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> m_orders <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> OrderAdapter m_adapter<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a> viewOrders<span class="sy0">;</span></div></div>
<p><strong>m_ProgressDialog</strong> is a small pop up displaying information that your data is being downloaded or retrieved other way.<br />
<strong>m_orders</strong> is an ArrayList which will hold our data downloaded from the internet or acquired other way<br />
<strong>m_adapte</strong>r is our custom class extending ArrayAdapter<br />
<strong>viewOrders</strong> is a runnable for downloading data from the internet in a separate thread</p>
<p>To import whatever you can at this point click Ctrl+Shit+O, some classes like Order or OrderAdapter are not created yet but don&#8217;t worry we will come to that point soon.<br />
Another important note at this point is that your SoftwarePassoinView should extend ListActivity instead of simple Activity.<br />
Your class should look more or less something like this now:<br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">package</span> <span class="co2">com.softberries.lve</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">java.util.ArrayList</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.app.ListActivity</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.app.ProgressDialog</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.os.Bundle</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> SoftwarePassionView <span class="kw1">extends</span> ListActivity<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">private</span> ProgressDialog m_ProgressDialog <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <span class="kw1">private</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> m_orders <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> OrderAdapter m_adapter<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a> viewOrders<span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co3">/** Called when the activity is first created. */</span><br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onCreate<span class="br0">&#40;</span>Bundle savedInstanceState<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span>.<span class="me1">onCreate</span><span class="br0">&#40;</span>savedInstanceState<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setContentView<span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">main</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
<p>Now lets create our simple Order class holding single order.<br />
Right click on the project and and select &#8216;New&#8217; -> &#8216;Class&#8217;, name it order and open it up in the editor.<br />
The source code for our orders looks like this:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">package</span> <span class="co2">com.softberries.lve</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> Order <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> orderName<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> orderStatus<span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getOrderName<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> orderName<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setOrderName<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> orderName<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">orderName</span> <span class="sy0">=</span> orderName<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getOrderStatus<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> orderStatus<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setOrderStatus<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> orderStatus<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">orderStatus</span> <span class="sy0">=</span> orderStatus<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
<p>The Order class is very simple and contains only 2 strings with getters and setter generated for them<br />
Now lets change our main.xml file to hold our custom list items:<br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container xml " style="overflow:auto;white-space:nowrap;width:535px"><div class="xml codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;utf-8&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;LinearLayout</span> <span class="re0">xmlns:android</span>=<span class="st0">&quot;http://schemas.android.com/apk/res/android&quot;</span></span><br />
<span class="sc3"> &nbsp; &nbsp;<span class="re0">android:orientation</span>=<span class="st0">&quot;vertical&quot;</span></span><br />
<span class="sc3"> &nbsp; &nbsp;<span class="re0">android:layout_width</span>=<span class="st0">&quot;fill_parent&quot;</span></span><br />
<span class="sc3"> &nbsp; &nbsp;<span class="re0">android:layout_height</span>=<span class="st0">&quot;fill_parent&quot;</span></span><br />
<span class="sc3"> &nbsp; &nbsp;<span class="re2">&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;ListView</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:id</span>=<span class="st0">&quot;@+id/android:list&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:layout_width</span>=<span class="st0">&quot;fill_parent&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:layout_height</span>=<span class="st0">&quot;fill_parent&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re2">/&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;TextView</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:id</span>=<span class="st0">&quot;@+id/android:empty&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:layout_width</span>=<span class="st0">&quot;fill_parent&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:layout_height</span>=<span class="st0">&quot;fill_parent&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; <span class="re0">android:text</span>=<span class="st0">&quot;@string/main_no_items&quot;</span><span class="re2">/&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;/LinearLayout<span class="re2">&gt;</span></span></span></div></div>
<p>This layout will display our list items if any and if the list is empty it will display &#8216;No orders to display&#8217; string defined in string.xml resource file.</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">&lt;?</span>xml version<span class="sy0">=</span><span class="st0">&quot;1.0&quot;</span> encoding<span class="sy0">=</span><span class="st0">&quot;utf-8&quot;</span><span class="sy0">?&gt;</span><br />
<span class="sy0">&lt;</span>resources<span class="sy0">&gt;</span><br />
&nbsp; &nbsp; <span class="sy0">&lt;</span>string name<span class="sy0">=</span><span class="st0">&quot;hello&quot;</span><span class="sy0">&gt;</span>Hello World, SoftwarePassionView<span class="sy0">!&lt;/</span>string<span class="sy0">&gt;</span><br />
&nbsp; &nbsp; <span class="sy0">&lt;</span>string name<span class="sy0">=</span><span class="st0">&quot;app_name&quot;</span><span class="sy0">&gt;</span>Software Passion<span class="sy0">&lt;/</span>string<span class="sy0">&gt;</span><br />
&nbsp; &nbsp; <span class="sy0">&lt;</span>string name<span class="sy0">=</span><span class="st0">&quot;main_no_items&quot;</span><span class="sy0">&gt;</span>No orders to display<span class="sy0">&lt;/</span>string<span class="sy0">&gt;</span><br />
<span class="sy0">&lt;/</span>resources<span class="sy0">&gt;</span></div></div>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Our list item (single row on the list) have a custom layout as well, defined in row.xml file:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">&lt;?</span>xml version<span class="sy0">=</span><span class="st0">&quot;1.0&quot;</span> encoding<span class="sy0">=</span><span class="st0">&quot;utf-8&quot;</span><span class="sy0">?&gt;</span><br />
<span class="sy0">&lt;</span>LinearLayout xmlns<span class="sy0">:</span>android<span class="sy0">=</span><span class="st0">&quot;http://schemas.android.com/apk/res/android&quot;</span><br />
&nbsp; &nbsp; android<span class="sy0">:</span>layout_width<span class="sy0">=</span><span class="st0">&quot;fill_parent&quot;</span><br />
&nbsp; &nbsp; android<span class="sy0">:</span>layout_height<span class="sy0">=</span><span class="st0">&quot;?android:attr/listPreferredItemHeight&quot;</span><br />
&nbsp; &nbsp; android<span class="sy0">:</span>padding<span class="sy0">=</span><span class="st0">&quot;6dip&quot;</span><span class="sy0">&gt;</span><br />
&nbsp; &nbsp; <span class="sy0">&lt;</span>ImageView<br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>id<span class="sy0">=</span><span class="st0">&quot;@+id/icon&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_width<span class="sy0">=</span><span class="st0">&quot;wrap_content&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_height<span class="sy0">=</span><span class="st0">&quot;fill_parent&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_marginRight<span class="sy0">=</span><span class="st0">&quot;6dip&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>src<span class="sy0">=</span><span class="st0">&quot;@drawable/icon&quot;</span> <span class="sy0">/&gt;</span><br />
&nbsp; &nbsp; <span class="sy0">&lt;</span>LinearLayout<br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>orientation<span class="sy0">=</span><span class="st0">&quot;vertical&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_width<span class="sy0">=</span><span class="st0">&quot;0dip&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_weight<span class="sy0">=</span><span class="st0">&quot;1&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_height<span class="sy0">=</span><span class="st0">&quot;fill_parent&quot;</span><span class="sy0">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>TextView<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>id<span class="sy0">=</span><span class="st0">&quot;@+id/toptext&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_width<span class="sy0">=</span><span class="st0">&quot;fill_parent&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_height<span class="sy0">=</span><span class="st0">&quot;0dip&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_weight<span class="sy0">=</span><span class="st0">&quot;1&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>gravity<span class="sy0">=</span><span class="st0">&quot;center_vertical&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&lt;</span>TextView<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_width<span class="sy0">=</span><span class="st0">&quot;fill_parent&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_height<span class="sy0">=</span><span class="st0">&quot;0dip&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>layout_weight<span class="sy0">=</span><span class="st0">&quot;1&quot;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>id<span class="sy0">=</span><span class="st0">&quot;@+id/bottomtext&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>singleLine<span class="sy0">=</span><span class="st0">&quot;true&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; android<span class="sy0">:</span>ellipsize<span class="sy0">=</span><span class="st0">&quot;marquee&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">/&gt;</span><br />
&nbsp; &nbsp; <span class="sy0">&lt;/</span>LinearLayout<span class="sy0">&gt;</span><br />
<span class="sy0">&lt;/</span>LinearLayout<span class="sy0">&gt;</span></div></div>
<p>Single row example has been borrowed from the romain Guy website <a href="http://www.curious-creature.org/2009/02/22/android-layout-tricks-1/">here</a></p>
<p>Ok, so we have all our layouts defined in the res folder under layout. Now its time to go back to our code and create our custom OrderAdapter class which will manage our list of orders:<br />
<script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">private</span> <span class="kw1">class</span> OrderAdapter <span class="kw1">extends</span> ArrayAdapter<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> items<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> OrderAdapter<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acontext+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Context</span></a> context, <span class="kw4">int</span> textViewResourceId, ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> items<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span><span class="br0">&#40;</span>context, textViewResourceId, items<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">items</span> <span class="sy0">=</span> items<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> getView<span class="br0">&#40;</span><span class="kw4">int</span> position, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> convertView, ViewGroup parent<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> v <span class="sy0">=</span> convertView<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>v <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LayoutInflater vi <span class="sy0">=</span> <span class="br0">&#40;</span>LayoutInflater<span class="br0">&#41;</span>getSystemService<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acontext+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Context</span></a>.<span class="me1">LAYOUT_INFLATER_SERVICE</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v <span class="sy0">=</span> vi.<span class="me1">inflate</span><span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">row</span>, <span class="kw2">null</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order o <span class="sy0">=</span> items.<span class="me1">get</span><span class="br0">&#40;</span>position<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>o <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TextView tt <span class="sy0">=</span> <span class="br0">&#40;</span>TextView<span class="br0">&#41;</span> v.<span class="me1">findViewById</span><span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">toptext</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TextView bt <span class="sy0">=</span> <span class="br0">&#40;</span>TextView<span class="br0">&#41;</span> v.<span class="me1">findViewById</span><span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">bottomtext</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>tt <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tt.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Name: &quot;</span><span class="sy0">+</span>o.<span class="me1">getOrderName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>bt <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bt.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Status: &quot;</span><span class="sy0">+</span> o.<span class="me1">getOrderStatus</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> v<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
<p>This is a private class and should be added to our SoftwarePassionView. This is extended ListAdapter which inside overriden getView method returns our row with assigned string values to the textfields defined in row.xml.</p>
<p>A huge part of our application is already done. Now we have to add some modifications to the onCreate method to initialize everything properly and add a method retrieving our orders from somewhere, lets start with the latter:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">private</span> <span class="kw4">void</span> getOrders<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_orders <span class="sy0">=</span> <span class="kw1">new</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order o1 <span class="sy0">=</span> <span class="kw1">new</span> Order<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o1.<span class="me1">setOrderName</span><span class="br0">&#40;</span><span class="st0">&quot;SF services&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o1.<span class="me1">setOrderStatus</span><span class="br0">&#40;</span><span class="st0">&quot;Pending&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order o2 <span class="sy0">=</span> <span class="kw1">new</span> Order<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o2.<span class="me1">setOrderName</span><span class="br0">&#40;</span><span class="st0">&quot;SF Advertisement&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o2.<span class="me1">setOrderStatus</span><span class="br0">&#40;</span><span class="st0">&quot;Completed&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_orders.<span class="me1">add</span><span class="br0">&#40;</span>o1<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_orders.<span class="me1">add</span><span class="br0">&#40;</span>o2<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="nu0">2000</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;ARRAY&quot;</span>, <span class="st0">&quot;&quot;</span><span class="sy0">+</span> m_orders.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">e</span><span class="br0">&#40;</span><span class="st0">&quot;BACKGROUND_PROC&quot;</span>, e.<span class="me1">getMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; runOnUiThread<span class="br0">&#40;</span>returnRes<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Instead of creating our simple orders in the method above you could of course download them from somewhere and assign the result to the m_orders array list. The method runOnUIThread is a utility method for running tasks back on the main UI thread after the job is done on the separate thread created for long running tasks. We will call our getOrders method from a separate thread.</p>
<p>The returnRes runnable adds newly retrieved Order object to our custom Adapter and notifies it of the data change:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a> returnRes <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>m_orders <span class="sy0">!=</span> <span class="kw2">null</span> <span class="sy0">&amp;&amp;</span> m_orders.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_adapter.<span class="me1">notifyDataSetChanged</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>i<span class="sy0">&lt;</span>m_orders.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>i<span class="sy0">++</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_adapter.<span class="me1">add</span><span class="br0">&#40;</span>m_orders.<span class="me1">get</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_ProgressDialog.<span class="me1">dismiss</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_adapter.<span class="me1">notifyDataSetChanged</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span></div></div>
<p>Now lets move to our overriden onCreate method. We will initialize here all the member variables as well as start a new thread retrieving our orders:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace">@Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onCreate<span class="br0">&#40;</span>Bundle savedInstanceState<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span>.<span class="me1">onCreate</span><span class="br0">&#40;</span>savedInstanceState<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setContentView<span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">main</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; m_orders <span class="sy0">=</span> <span class="kw1">new</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">m_adapter</span> <span class="sy0">=</span> <span class="kw1">new</span> OrderAdapter<span class="br0">&#40;</span><span class="kw1">this</span>, R.<span class="me1">layout</span>.<span class="me1">row</span>, m_orders<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setListAdapter<span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">m_adapter</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; viewOrders <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getOrders<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a> thread <span class="sy0">=</span> &nbsp;<span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a><span class="br0">&#40;</span><span class="kw2">null</span>, viewOrders, <span class="st0">&quot;MagentoBackground&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; thread.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; m_ProgressDialog <span class="sy0">=</span> ProgressDialog.<span class="me1">show</span><span class="br0">&#40;</span>SoftwarePassionView.<span class="kw1">this</span>, &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;Please wait...&quot;</span>, <span class="st0">&quot;Retrieving data ...&quot;</span>, <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span></div></div>
<p>After initialization, we start new thread using the viewOrders runnable and show the progress dialog which we close once the orders are retrieved.<br />
Now you should be able to run your application. After the application starts it spawns new thread and displays the loader:</p>
<table>
<tr>
<td><a href="http://www.softwarepassion.com/wp-content/uploads/screen_load.png" rel="lightbox[189]"><img src="http://www.softwarepassion.com/wp-content/uploads/screen_load-200x300.png" alt="screen_load" title="screen_load" width="200" height="300" class="aligncenter size-medium wp-image-195" /></a></td>
<td><a href="http://www.softwarepassion.com/wp-content/uploads/screen1.png" rel="lightbox[189]"><img src="http://www.softwarepassion.com/wp-content/uploads/screen1-200x300.png" alt="screen1" title="screen1" width="200" height="300" class="aligncenter size-medium wp-image-196" /></a></td>
</tr>
</table>
<p>And thats it. You can add an Item Click Listener to your list to start new activities etc.<br />
Full source code for the SoftwarePassionView below:</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:535px;height:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">package</span> <span class="co2">com.softberries.lve</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">java.util.ArrayList</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.app.ListActivity</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.app.ProgressDialog</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.content.Context</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.os.Bundle</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.util.Log</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.view.LayoutInflater</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.view.View</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.view.ViewGroup</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.widget.ArrayAdapter</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">android.widget.TextView</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> SoftwarePassionView <span class="kw1">extends</span> ListActivity<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">private</span> ProgressDialog m_ProgressDialog <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span> <br />
&nbsp; &nbsp; <span class="kw1">private</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> m_orders <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> OrderAdapter m_adapter<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a> viewOrders<span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> onCreate<span class="br0">&#40;</span>Bundle savedInstanceState<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span>.<span class="me1">onCreate</span><span class="br0">&#40;</span>savedInstanceState<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setContentView<span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">main</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; m_orders <span class="sy0">=</span> <span class="kw1">new</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">m_adapter</span> <span class="sy0">=</span> <span class="kw1">new</span> OrderAdapter<span class="br0">&#40;</span><span class="kw1">this</span>, R.<span class="me1">layout</span>.<span class="me1">row</span>, m_orders<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setListAdapter<span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">m_adapter</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; viewOrders <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getOrders<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a> thread <span class="sy0">=</span> &nbsp;<span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a><span class="br0">&#40;</span><span class="kw2">null</span>, viewOrders, <span class="st0">&quot;MagentoBackground&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; thread.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; m_ProgressDialog <span class="sy0">=</span> ProgressDialog.<span class="me1">show</span><span class="br0">&#40;</span>SoftwarePassionView.<span class="kw1">this</span>, &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;Please wait...&quot;</span>, <span class="st0">&quot;Retrieving data ...&quot;</span>, <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a> returnRes <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arunnable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Runnable</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>m_orders <span class="sy0">!=</span> <span class="kw2">null</span> <span class="sy0">&amp;&amp;</span> m_orders.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_adapter.<span class="me1">notifyDataSetChanged</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>i<span class="sy0">&lt;</span>m_orders.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>i<span class="sy0">++</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_adapter.<span class="me1">add</span><span class="br0">&#40;</span>m_orders.<span class="me1">get</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_ProgressDialog.<span class="me1">dismiss</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_adapter.<span class="me1">notifyDataSetChanged</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">void</span> getOrders<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_orders <span class="sy0">=</span> <span class="kw1">new</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order o1 <span class="sy0">=</span> <span class="kw1">new</span> Order<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o1.<span class="me1">setOrderName</span><span class="br0">&#40;</span><span class="st0">&quot;SF services&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o1.<span class="me1">setOrderStatus</span><span class="br0">&#40;</span><span class="st0">&quot;Pending&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order o2 <span class="sy0">=</span> <span class="kw1">new</span> Order<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o2.<span class="me1">setOrderName</span><span class="br0">&#40;</span><span class="st0">&quot;SF Advertisement&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; o2.<span class="me1">setOrderStatus</span><span class="br0">&#40;</span><span class="st0">&quot;Completed&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_orders.<span class="me1">add</span><span class="br0">&#40;</span>o1<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_orders.<span class="me1">add</span><span class="br0">&#40;</span>o2<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Athread+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Thread</span></a>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="nu0">5000</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">i</span><span class="br0">&#40;</span><span class="st0">&quot;ARRAY&quot;</span>, <span class="st0">&quot;&quot;</span><span class="sy0">+</span> m_orders.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class="me1">e</span><span class="br0">&#40;</span><span class="st0">&quot;BACKGROUND_PROC&quot;</span>, e.<span class="me1">getMessage</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; runOnUiThread<span class="br0">&#40;</span>returnRes<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw1">class</span> OrderAdapter <span class="kw1">extends</span> ArrayAdapter<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> items<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> OrderAdapter<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acontext+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Context</span></a> context, <span class="kw4">int</span> textViewResourceId, ArrayList<span class="sy0">&lt;</span>Order<span class="sy0">&gt;</span> items<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">super</span><span class="br0">&#40;</span>context, textViewResourceId, items<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">items</span> <span class="sy0">=</span> items<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> getView<span class="br0">&#40;</span><span class="kw4">int</span> position, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> convertView, ViewGroup parent<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">View</span></a> v <span class="sy0">=</span> convertView<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>v <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LayoutInflater vi <span class="sy0">=</span> <span class="br0">&#40;</span>LayoutInflater<span class="br0">&#41;</span>getSystemService<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acontext+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Context</span></a>.<span class="me1">LAYOUT_INFLATER_SERVICE</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; v <span class="sy0">=</span> vi.<span class="me1">inflate</span><span class="br0">&#40;</span>R.<span class="me1">layout</span>.<span class="me1">row</span>, <span class="kw2">null</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Order o <span class="sy0">=</span> items.<span class="me1">get</span><span class="br0">&#40;</span>position<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>o <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TextView tt <span class="sy0">=</span> <span class="br0">&#40;</span>TextView<span class="br0">&#41;</span> v.<span class="me1">findViewById</span><span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">toptext</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TextView bt <span class="sy0">=</span> <span class="br0">&#40;</span>TextView<span class="br0">&#41;</span> v.<span class="me1">findViewById</span><span class="br0">&#40;</span>R.<span class="me1">id</span>.<span class="me1">bottomtext</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>tt <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tt.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Name: &quot;</span><span class="sy0">+</span>o.<span class="me1">getOrderName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>bt <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bt.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Status: &quot;</span><span class="sy0">+</span> o.<span class="me1">getOrderStatus</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> v<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
<p><script type="text/javascript"><!--
google_ad_client = "pub-3015706834207881";
/* 468x15, utworzono 09-11-19 */
google_ad_slot = "3912330401";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/feed/</wfw:commentRss>
		<slash:comments>80</slash:comments>
		</item>
		<item>
		<title>New discovery for MIDP development</title>
		<link>http://www.softwarepassion.com/new-discovery-for-midp-development/</link>
		<comments>http://www.softwarepassion.com/new-discovery-for-midp-development/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 14:04:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mobile Development]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=39</guid>
		<description><![CDATA[Just wanted to spread the word about my new discovery. About a year ago I was adding finishing touches to my final year project on University of Greenwich and I remember that one of the biggest problems was to come up with a nicely looking UI for my mobile application. I&#8217;ve used SVG and I [...]]]></description>
			<content:encoded><![CDATA[<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_SjX7MIMF_HI/SXIN7t_CDgI/AAAAAAAAAPk/EQqJ4P4Rd-g/s1600-h/kuix-demo.JPG" rel="lightbox[39]"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 144px; height: 320px;" src="http://1.bp.blogspot.com/_SjX7MIMF_HI/SXIN7t_CDgI/AAAAAAAAAPk/EQqJ4P4Rd-g/s320/kuix-demo.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5292307831721168386" /></a><br />Just wanted to spread the word about my new discovery. About a year ago I was adding finishing touches to my final year project on University of Greenwich and I remember that one of the biggest problems was to come up with a nicely looking UI for my mobile application. I&#8217;ve used SVG and I have to say that the effect was &#8216;ok&#8217;, could be much better but building up applications with svg was in my opinion difficult. I had to concentrate my efforts on the web services but spent most of my time building up GUI. Well, after a year I&#8217;ve incidently found a nice and promising open source project which would solve this using CSS techniques and two small libraries, the project is named <span style="font-weight:bold;">KUIX</span> and you can find out more about it on the <a href="http://www.kalmeo.org">kalmeo.org </a>website. I have to add that I tried Java ME Polish and for me KUIX way of doing things is much simpler.<br />You can check out the demo <a href="http://www.kalmeo.org/projects/kuix/demo">here</a><br />Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/new-discovery-for-midp-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java ME menu with SVG-tiny.</title>
		<link>http://www.softwarepassion.com/java-me-menu-with-svg-tiny/</link>
		<comments>http://www.softwarepassion.com/java-me-menu-with-svg-tiny/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 03:20:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Mobile Development]]></category>

		<guid isPermaLink="false">http://softwarepassion.com/?p=16</guid>
		<description><![CDATA[    Finally I did it! All the trial versions of Adobe Illustrator, Ikivo Animator, Beatware Mobile Designer and God knows whats more got expired and I really did start looking for other solutions to create Java ME menu (different than the standard solutions from the J2ME libraries) when finally I did something [...]]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: underline;"></span>    Finally I did it! All the trial versions of Adobe Illustrator, Ikivo Animator, Beatware Mobile Designer and God knows whats more got expired and I really did start looking for other solutions to create Java ME menu (different than the standard solutions from the J2ME libraries) when finally I did something really simple &#8211; I just took a similar thing found on java.net and carefully examined the XML code behind the picture.<br />Looking for a similar solutions was my latest nightmare, I have to prepare my Final Year Project, the project itself is not about mobile GUI&#8217;s so I don&#8217;t want to spend much time on it but I just didn&#8217;t want to go for a demo with those ugly standard java components.<br />There are a number of tutorials how to add svg tiny files in Netbeans Mobility Pack but it is very difficult to find a tutorial describing how to create such a file. Nevertheless, I have found myself in a situation where I have just decided to write such a file from scratch and forget about all those fancy tools as they are almost zero compatible between each other (even when each of them produces &#8220;standard&#8221; svgt file as an output <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), and because of the fact that I couldn&#8217;t find enough resources on the net about using them for this purpose.<br />Speaking about the tools, I have found very strange thing about Beatware Mobile Designer software, so many times seen on the Sun&#8217;s/NetBeans tutorias or screencasts, this software is almost impossible to find, maybe my ISP blocks access to their servers for some reason which I can&#8217;t imagine, but I had to digg in some very dusty corners of the net to obtain the trial version of this software.<br />Anyway, maybe sometimes is just best to stick with the simplest tool &#8211; text editor!<br />After a while, when experimenting with the svg document I started to realize that it is not actually that difficult to follow.<br />Check out the tutorial &#8220;<span style="font-size:85%;">Adding and Editing Scalable Vector Graphic (SVG) Files in the Mobility Pack&#8221; </span>@:<br />http://www.netbeans.org/kb/55/svg-tutorial.html<br />The necessary files for this tutorial you can download from:<br />http://wiki.netbeans.info/wiki/attach/NBDemoSVG/svgs.zip<br />When you download the svgs.zip and unpack it you will find a file named &#8220;menu.svg&#8221;,<br />Open the file in any text editor and you can play with it, checking in Netbeans if it&#8217;s still svgt compilant <img src='http://www.softwarepassion.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <br />The menu is pretty simple, consist of two layers, one with graphics beneath menu elements and another one with menu itself :<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SjX7MIMF_HI/Rwm5QKVlZ4I/AAAAAAAAAHc/v7pa8wCWWNA/s1600-h/svg-menu-preview.png" rel="lightbox[16]"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_SjX7MIMF_HI/Rwm5QKVlZ4I/AAAAAAAAAHc/v7pa8wCWWNA/s320/svg-menu-preview.png" alt="" id="BLOGGER_PHOTO_ID_5118826138787211138" border="0" /></a>To create the your own menu just delete the layer with the graphics if you don&#8217;t like it and add another one.<br />You can easily sort out the menu elements, how they are organised and how they work.<br />1. First thing to remember is that all menu elements must be named with the pattern:<br />menuItem_blahblah, this is necessary if you want netbeans to recognize the element as an actual menu item.<br />2. The menu itself consists of simple animated text elements, if you want to add/remove another menu item just copy the existing one and change the element name plus the values in &#8220;values&#8221; attribute accordingly, you can sort out what values you have to enter there by looking at previous elements.<br />3. To make the moving box work with additional menu elements you have to put some more work into it, first remove all existing &#8220;animateTransform&#8221; elements nested within
<path> element and insert there new transforms which will work with any number of menu items. The new transforms for my menu look like this:</path>
<pre><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_SjX7MIMF_HI/Rwm0aaVlZ3I/AAAAAAAAAHU/NXFeQQr56NA/s1600-h/phone.png" rel="lightbox[16]"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_SjX7MIMF_HI/Rwm0aaVlZ3I/AAAAAAAAAHU/NXFeQQr56NA/s320/phone.png" alt="" id="BLOGGER_PHOTO_ID_5118820817322731378" border="0" /></a><span style="color: rgb(0, 0, 153);">begin="menuItem_0_download.focusin" dur="0.3s"end="menuItem_0_download.focusout" fill="freeze"/> </span><span style="color: rgb(0, 0, 153);">begin="menuItem_1_animate.focusin" dur="0.3s"end="menuItem_1_animate.focusout" fill="freeze"/></span><span style="color: rgb(0, 0, 153);">begin="menuItem_2_about.focusin" dur="0.3s"end="menuItem_2_about.focusout" fill="freeze"/> </span><span style="color: rgb(0, 0, 153);">begin="menuItem_3_exit.focusin" dur="0.3s"end="menuItem_3_exit.focusout" fill="freeze"/></span><span style="color: rgb(0, 0, 153);">begin="menuItem_4_test.focusin" dur="0.3"end="menuItem_4_test.focusout" fill="freeze"/></span></pre>
<path><span style="color: rgb(0, 0, 153);"><animatetransform attributename="transform" type="translate" values="0,0;0,0"><span style="color: rgb(0, 0, 153);"><animatetransform attributename="transform" type="translate" values="0,30;0,30"><span style="color: rgb(0, 0, 0);">etc. with &#8220;values&#8221; element increasing every time by 30.<br />Here you have transformed, very simple menu &#8211;><br /></span></animatetransform></span></animatetransform></span></path>Anyone interested in JSR-226 know that there is a problem with SVGt if you want to use components like TextFields etc, as there is on support for these elements in the specs so far, at least I have never hear of it.<br />If you read this post you are probably looking for solution with custom J2ME GUI or you are one of my curious friends and probably you don&#8217;t understand much of this anyway, but if you are the first kind, and you know about any valuable tutorials, tools or simply anything JSR-226 related please post it in comments, any kind of collaboration would be appreciated!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.softwarepassion.com/java-me-menu-with-svg-tiny/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
