<?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>Foxykeep on Android</title> <atom:link href="http://android.foxykeep.com/feed" rel="self" type="application/rss+xml" /><link>http://android.foxykeep.com</link> <description></description> <lastBuildDate>Fri, 31 May 2013 02:02:36 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.5.1</generator> <item><title>Some Gradle Tips for your Android development</title><link>http://android.foxykeep.com/dev/some-gradle-tips-for-your-android-development</link> <comments>http://android.foxykeep.com/dev/some-gradle-tips-for-your-android-development#comments</comments> <pubDate>Fri, 31 May 2013 01:58:42 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Build system]]></category> <category><![CDATA[Développement]]></category> <category><![CDATA[gradle]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1063</guid> <description><![CDATA[As most of you know, Android released the beta of their new IDE called Android Studio (Check the Google I/O session to see why it is so much better that what you are currently using). With it comes the new &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/dev/some-gradle-tips-for-your-android-development">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p> As most of you know, Android released the beta of their new IDE called Android Studio (Check <a
href="http://www.youtube.com/watch?v=lmv1dTnhLH4" target="_blank">the Google I/O session</a> to see why it is so much better that what you are currently using). With it comes the new Android SDK Build System (Same deal, here is <a
href="http://www.youtube.com/watch?v=LCJAgPkpmR0">the corresponding Google I/O session</a>).<br
/> It was released a few weeks ago at Google I/O and it&#8217;s just awesome. A little more work that the current build system but so much more possibilities offered to us developers :)</p><p> The new build system is based on <a
href="http://www.gradle.org/">gradle</a>. You can use it partly from Android Studio but as it&#8217;s often the case you may have to use it from the command line to do more complex tasks. Here are some tips if you use it from the command line.</p><p> For example to compile your project, you have to use <b><code>gradle assemble</b></code>. But you can also just write <b><code>gradle a</b></code>.<br
/> As long as there is no other task sharing the part you write after gradle, it will autocomplete it for you.</p><p> <b><code>gradle check</b></code> can therefore be reduced to <b><code>gradle ch</b></code>. You can&#8217;t reduce it to <b><code>gradle c</b></code> however as there is also <b><code>gradle clean</b></code> which also starts with a c</p><p> Ok. That&#8217;s a good start. But let&#8217;s make it even better.</p><p> Open a terminal and try the following command<br
/> <b><code>$ g</b></code> <i>(Just a &#8216;g&#8217;, nothing else)</i><br
/> You should get the following output:<br
/> <b><code>-bash: g: command not found</b></code><br
/> <i>If you already have a command called <b><code>g</b></code>, you can use <b><code>gr</b></code> or <b><code>gra</b></code> instead</i></p><p> If that&#8217;s the case, go to your .bashrc file and add the following line:<br
/> <b><code>alias g='gradle'</b></code></p><p> Open a new terminal so that the .bashrc is read again with the new line.<br
/> Now you just have to write <b><code>g a</b></code></p><p> In 5 minutes we jumped from <b><code>gradle assemble</b></code> to <b><code>g a</b></code></p><p> You still want more tips ?!<br
/> The gradle completion is camelCase based. Which means <b><code>gradle deviceCheck</b></code> can be reduced to <b><code>g dC</b></code> !</p><p>(Thanks <a
href="https://plus.google.com/u/0/+XavierDucrohet" target="_blank">+Xavier Ducrohet</a> for showing me the completion part of these tips ^^)</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/dev/some-gradle-tips-for-your-android-development/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ParcelableCodeGenerator</title><link>http://android.foxykeep.com/projects/parcelablecodegenerator/parcelablecodegenerator</link> <comments>http://android.foxykeep.com/projects/parcelablecodegenerator/parcelablecodegenerator#comments</comments> <pubDate>Sat, 02 Feb 2013 19:02:13 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[ParcelableCodeGenerator]]></category> <category><![CDATA[Code Generator]]></category> <category><![CDATA[Développement]]></category> <category><![CDATA[JSON]]></category> <category><![CDATA[Parcelable]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1057</guid> <description><![CDATA[If you are used to coding Android applications, there is a good chance that you had to write some Parcelable classes. A quick reminder about Parcelable : It&#8217;s an interface you can implement on your classes. If you do so, &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/projects/parcelablecodegenerator/parcelablecodegenerator">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p>If you are used to coding Android applications, there is a good chance that you had to write some <a
href="https://developer.android.com/reference/android/os/Parcelable.html" target="_blank"><code>Parcelable</code></a> classes.</p><p>A quick reminder about <code>Parcelable</code> : It&#8217;s an interface you can implement on your classes. If you do so, you can then store the whole class in a <code>Bundle</code> or as an <code>Intent</code> extra.<br
/> My webservice library, <a
href="http://www.datadroidlib.com">DataDroid</a>, use <code>Parcelable</code> objects to retrieve the result from the webservices if you don&#8217;t use a Database to store your data.</p><p>There is one downside with <code>Parcelable</code> &#8230; You need to write a LOT of boilerplate to implement the <code>Parcelable</code> interface in your class. And as every good software engineer, I&#8217;m lazy :D<br
/> Which brings us to <b>ParcelableCodeGenerator</b> !!</p><p>You can find all the information on its <a
target="_blank" href="https://github.com/foxykeep/ParcelableCodeGenerator">GitHub page</a>, but here is a short explanation :</p><ul><li>You clone the repository and import the Java project in Eclipse (or your favorite IDE)</li><li>You write a JSON file defining your <code>Parcelable</code> class in the <code>input</code> folder (you can use subfolders to sort your files). Examples are provided to learn the syntax</li><li>You run the project as a Java Project</li><li>The corresponding classes are &#8220;magically&#8221; generated in the <code>output</code> folder ready for you to copy them in your project</li></ul><p>It&#8217;s really easy to use and it&#8217;s going to save you a lot of time.</p><p>Last important thing : the project license. As all my other projects, it is released under the <strong>Beerware</strong> license :</p><blockquote><p>You can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/projects/parcelablecodegenerator/parcelablecodegenerator/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>DataDroid v2 is available !!!</title><link>http://android.foxykeep.com/news/datadroid-v2-is-available</link> <comments>http://android.foxykeep.com/news/datadroid-v2-is-available#comments</comments> <pubDate>Wed, 26 Dec 2012 00:26:37 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[News]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1050</guid> <description><![CDATA[The version 2 of DataDroid is finally available ! What&#8217;s new ? A better architecture of the library which reduce a lot the boilerplate the developer has to write (you can check this article to see the difference) A more &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/news/datadroid-v2-is-available">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p> The version 2 of DataDroid is finally available !</p><h3> What&#8217;s new ?<br
/></h3><ul><li> A better architecture of the library which reduce a lot the boilerplate the developer has to write (you can check <a
href="http://www.datadroidlib.com/2012/11/update-on-datadroid-v2-development-and-some-numbers">this article</a> to see the difference)</li><li> A more robust and easier to use API for your network connections based on HTTPUrlConnection.</li><li> New features in the network connection API : HTTP authentication and possibility to disable SSL validation.</li><li> Automatic generation of a valid Android User-Agent for your requests</li><li> Better management of calling multiple requests at the same time in your Activitiess (It was possible in v1.0 but not easily enough).</li><li> The library works with API 8+ now (aka Froyo and future versions) which covers currently 97% of the user base, so it shouldn&#8217;t be a problem.</li><li> A lot more samples available.</li></ul><p> For a complete presentation of the library, You can check <a
title="Presentation" href="http://www.datadroidlib.com/presentation">this page</a>.</p><p> The sample application has been updated on Google Play :</p><p
style="text-align: center;"> <a
href="https://play.google.com/store/apps/details?id=com.foxykeep.datadroidpoc" target="_blank"><br
/> <img
class="aligncenter  wp-image-100" title="datadroid" src="http://www.datadroidlib.com/wp-content/uploads/2012/04/datadroid.png" alt="" width="124" height="124" /><br
/> </a></p><p> And as always the source code is available on <a
href="https://github.com/foxykeep/datadroid">GitHub</a></p><p> If you want to know how it works and how to use it in your application, go to the <a
href="http://www.datadroidlib.com/" target="_blank">DataDroid website</a> and you&#8217;ll find all the information you need</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/news/datadroid-v2-is-available/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ContentProviderCodeGenerator or how to create your ContentProviders easily</title><link>http://android.foxykeep.com/dev/contentprovidercodegenerator-or-how-to-create-your-contentproviders-easily</link> <comments>http://android.foxykeep.com/dev/contentprovidercodegenerator-or-how-to-create-your-contentproviders-easily#comments</comments> <pubDate>Wed, 26 Sep 2012 05:20:50 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[ContentProviderCodeGenerator]]></category> <category><![CDATA[Développement]]></category> <category><![CDATA[Projects]]></category> <category><![CDATA[Code Generator]]></category> <category><![CDATA[ContentProvider]]></category> <category><![CDATA[JSON]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1041</guid> <description><![CDATA[There are multiple ways to store data persistently in Android, like for example the SharedPreferences. One of them is to use a ContentProvider. A ContentProvider is one of primary building blocks of Android applications, providing content to applications. You can &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/dev/contentprovidercodegenerator-or-how-to-create-your-contentproviders-easily">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p>There are multiple ways to store data persistently in Android, like for example the <a
target="_blank" href="https://developer.android.com/reference/android/content/SharedPreferences.html"><code>SharedPreferences</code></a>. One of them is to use a <a
target="_blank" href="https://developer.android.com/reference/android/content/ContentProvider.html"><code>ContentProvider</code></a>.</p><p>A <code>ContentProvider</code> is one of primary building blocks of Android applications, providing content to applications. You can for example use it to open some of your data to other applications.<br
/> You can also use it to just store your data and not export it to other applications (by setting the flag <code>android:exported="false"</code> in your Android Manifest).</p><p>Write your first ContentProvider can be a challenging task as there are a good number of methods to implement and it&#8217;s not always clear how to do it.<br
/> That was one of the reason why I released with <a
target="_blank" href="http://datadroid.foxykeep.com">DataDroid</a> (my local and remote data management library) <a
target="_blank" href="https://github.com/foxykeep/DataDroid/tree/master/DataDroidPoC/src/com/foxykeep/datadroidpoc/skeleton/data/provider">some skeletons</a> explaining how to do it by just following a bunch of <code>TODO</code>s to follow.</p><p>However you still have a lot of code to write, most of it just being copy/paste all over the classes. And when you start having multiple versions of your ContentProvider with new columns or tables, it begins to be really annoying to have to maintain that&#8230;</p><p>Which brings us to <b>ContentProviderCodeGenerator</b> !!</p><p>Like every lazy software engineer, it was bothering me and so I took/found some time and wrote a <strong>code generator</strong> ! :)</p><p>You can find all the information on its <a
target="_blank" href="https://github.com/foxykeep/ContentProviderCodeGenerator">GitHub page</a>, but here is a short explanation :</p><ul><li>You clone the repository and import the Java project in Eclipse (or your favorite IDE)</li><li>You write a JSON file defining your tables and their columns in the <code>input</code> folder. Examples are provided to learn the syntax</li><li>You run the project as a Java Project</li><li>All the needed files are &#8220;magically&#8221; generated in the <code>output</code> folder ready for you to copy them in your project</li></ul><p>It&#8217;s really easy to use (and if needed I can help you)<br
/> It makes adding a column or a table so easy it&#8217;s not even funny.<br
/> It just works. <i>(yes I know I just used an Apple slogan on an Android blog)</i> (and if it doesn&#8217;t work, I&#8217;ll fix it)</p><p>Last important thing : the project license. As all my other projects, it is released under the <strong>Beerware</strong> license :</p><blockquote><p>You can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/dev/contentprovidercodegenerator-or-how-to-create-your-contentproviders-easily/feed</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>TimePickerDialog and AM/PM vs 24 Hour format</title><link>http://android.foxykeep.com/dev/timepickerdialog-and-ampm-vs-24-hour-format</link> <comments>http://android.foxykeep.com/dev/timepickerdialog-and-ampm-vs-24-hour-format#comments</comments> <pubDate>Wed, 29 Aug 2012 23:53:58 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Développement]]></category> <category><![CDATA[DateFormat]]></category> <category><![CDATA[TimePickerDialog]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1032</guid> <description><![CDATA[Just a short article to maybe help other people not spend 1 hour searching the web for the answer like I did. The Android SDK provides you with 2 really well made dialog pickers for respectively a date and a &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/dev/timepickerdialog-and-ampm-vs-24-hour-format">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p>Just a short article to maybe help other people not spend 1 hour searching the web for the answer like I did.</p><p>The Android SDK provides you with 2 really well made dialog pickers for respectively a date and a time : <a
href="https://developer.android.com/reference/android/app/DatePickerDialog.html"><code>DatePickerDialog</code></a> and <a
href="https://developer.android.com/reference/android/app/TimePickerDialog.html"><code>TimePickerDialog</code></a>.</p><p>The constructors for <code>DatePickerDialog</code> are pretty much straight-forward.<br
/> However the one for <code>TimePickerDialog</code> has a small problem :</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/08/timepickerdialog.png" rel="lightbox[1032]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/08/timepickerdialog.png" alt="" title="timepickerdialog" width="600" height="56" class="aligncenter size-full wp-image-1034" /></a></p><p>As you can see in the screenshot above, you need to specify through the <code>is24HourView</code> parameter whether you want to display a time with hours from 0 to 23 (used in France and Germany for example) or you want to display a time with hours from 1 to 12 and also AM/PM selector (used in the USA for example).</p><p>The main problem is that I don&#8217;t want to choose that in my code. I want it to be linked to the user locale settings like everythink else.<br
/> I don&#8217;t want why it was coded like that but here is how to link this parameter to the user locale :</p><div
class="wp_codebox_msgheader"><span
class="right"></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p1032code2'); return false;">View Code</a> JAVA</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p10322"><td
class="code" id="p1032code2"><pre class="java" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">new</span> TimePickerDialog<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, mOnTimeSetListener, time.<span style="color: #006633;">hour</span>, time.<span style="color: #006633;">minute</span>, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adateformat+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">DateFormat</span></a>.<span style="color: #006633;">is24HourFormat</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p> The method <code>is24HourFormat</code> from <code>DateFormat</code> allows us to retrieve the user setting.</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/dev/timepickerdialog-and-ampm-vs-24-hour-format/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Android + LEGO = Win ?</title><link>http://android.foxykeep.com/news/android-lego-win</link> <comments>http://android.foxykeep.com/news/android-lego-win#comments</comments> <pubDate>Mon, 06 Aug 2012 08:10:28 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Figurines]]></category> <category><![CDATA[News]]></category> <category><![CDATA[BugDroid]]></category> <category><![CDATA[LEGO]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1020</guid> <description><![CDATA[Update 08/07/2012 : After 24 hours, the project has already reached 2600+. 1/4 of the task is already done ! Now we just need to continue to talk about it so we reached rapidly the 10 000 mark ! :D &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/news/android-lego-win">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p><strong>Update 08/07/2012 :</strong> After 24 hours, the project has already reached 2600+. 1/4 of the task is already done ! Now we just need to continue to talk about it so we reached rapidly the 10 000 mark ! :D</p><p>For the past years, I have been a developer as well as a huge fan of Android. I also have always played with LEGO (when I was young and even still now)</p><p>What if we could combine these 2 worlds ?!</p><p>That&#8217;s what <a
href="https://plus.google.com/105812936230726930845/posts">Marc Young</a> must have been thinking when he started his project !</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/08/thumb640x360.jpeg" rel="lightbox[1020]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/08/thumb640x360.jpeg" alt="" title="thumb640x360" width="640" height="360" class="aligncenter size-full wp-image-1021" /></a></p><p>This project looks awesome with even rotating arms, heads and antennas. And frankly I want one for myself ! :D</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/08/thumb640x3601.jpeg" rel="lightbox[1020]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/08/thumb640x3601.jpeg" alt="" title="thumb640x360" width="640" height="360" class="aligncenter size-full wp-image-1022" /></a></p><p>There is only one problem&#8230; This project is part of the CUUSOO system which is a way for people to present project to LEGO for future creation.<br
/> And before an idea can be valid, it needs to receive 10 000 votes.</p><p>So it would be great if you could <a
href="http://lego.cuusoo.com/ideas/view/22758">vote for this project</a> (it&#8217;s really fast and easy to do).</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/news/android-lego-win/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Small issue with ADT 20 and SDK 16 and how to fix it</title><link>http://android.foxykeep.com/dev/small-issue-with-adt-20-and-sdk-16-and-how-to-fix-it</link> <comments>http://android.foxykeep.com/dev/small-issue-with-adt-20-and-sdk-16-and-how-to-fix-it#comments</comments> <pubDate>Fri, 06 Jul 2012 06:05:07 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Développement]]></category> <category><![CDATA[ADT]]></category> <category><![CDATA[Bug]]></category> <category><![CDATA[EditText]]></category> <category><![CDATA[Jelly Bean]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=1003</guid> <description><![CDATA[The latest version of the Android Developer Tools (ADT) brought a lot of improvements for us developers. Sadly there is a little quirk coming with it too. If you have a project targeting API 16/Jelly Bean and you are using &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/dev/small-issue-with-adt-20-and-sdk-16-and-how-to-fix-it">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p>The latest version of the Android Developer Tools (ADT) brought a lot of improvements for us developers. Sadly there is a little quirk coming with it too.</p><p>If you have a project targeting API 16/Jelly Bean and you are using ADT 20, you might have some problems with the Graphical Layout tool. Instead of displaying the UI, you may end up with the following screen :</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/07/adt20edittext.png" rel="lightbox[1003]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/07/adt20edittext-1024x595.png" alt="" title="adt20edittext" width="640" height="371" class="aligncenter size-large wp-image-1004" /></a></p><p>The error message is <code>java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;</code> which is totally clear&#8230; or not.<br
/> By looking inside Eclipse, we can find the corresponding complete Stacktrace :</p><div
class="wp_codebox_msgheader"><span
class="right"></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p1003code4'); return false;">View Code</a> TEXT</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p10034"><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td
class="code" id="p1003code4"><pre class="text" style="font-family:monospace;">java.lang.NoSuchMethodError: java.util.LinkedHashMap.eldest()Ljava/util/Map$Entry;
	at android.util.LruCache.trimToSize(LruCache.java:206)
	at android.util.LruCache.evictAll(LruCache.java:306)
	at android.widget.SpellChecker.resetSession(SpellChecker.java:141)
	at android.widget.SpellChecker.setLocale(SpellChecker.java:147)
	at android.widget.SpellChecker.&lt;init&gt;(SpellChecker.java:112)
	at android.widget.Editor.updateSpellCheckSpans(Editor.java:461)
	at android.widget.Editor.onAttachedToWindow(Editor.java:212)
	at android.widget.TextView.onAttachedToWindow(TextView.java:4455)
	at android.view.View.dispatchAttachedToWindow(View.java:11755)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424)
	at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2424)
	at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:37)
	at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:329)
	at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:331)
	at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1640)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1391)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1165)
	at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegatePageChange(LayoutEditorDelegate.java:679)
	at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.pageChange(CommonXmlEditor.java:359)
	at org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java:1067)</pre></td></tr></table></div><p>After some research, I found a temporary solution on <a
href="http://stackoverflow.com/questions/11275754/exception-in-loading-layout-java-util-linkedhashmap-eldestljava-util-mapentr" target="_blank">StackOverflow</a> until this bug is fixed in the next patch of ADT.</p><p>The problem seems to be linked to the use of <code>EditText</code> with suggestions in Jelly Bean. On a phone there is no problem but in the Graphical Layout tool it breaks.<br
/> We have 2 solutions :</p><ul><li>Disable the suggestions in the <code>EditText</code> with the inputType <code>textNoSuggestions</code><ul><li><em>It fixes the bug but it prevents the users from using the completion in your app. So let&#8217;s forget about it and look at the other solution</em></li></ul></li><li>Switch the Graphical Layout to a different API (for example ICS/15 which is nearly the same as JB in terms of UI)</li></ul><p>To do that, you just need to use the little droid on the top right and switch to 15 as shown in the screenshot below.</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/07/adt20chgeapi.png" rel="lightbox[1003]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/07/adt20chgeapi.png" alt="" title="adt20chgeapi" width="455" height="283" class="aligncenter size-full wp-image-1010" /></a></p><p>And voila ! :)</p><p><strong>Update :</strong><br
/> Xavier Ducrohet (who is working on the ADT tool) replied to <a
href="https://plus.google.com/104906570725395999813/posts/CKguK1XQuWR" target="_blank">my post on Google +</a> and told me that the issue doesn&#8217;t come from ADT 20 but from the rendering library of Jelly Bean. So if I understand right, we need to wait for an update of JB to have a fix.</p><p><strong>Update 2 :</strong><br
/> The fix is available in ADT 20.0.1 ! So update the following elements and it will be good :</p><ul><li>ADT Plugin in version 20.0.1</li><li>Android SDK Tools 20.0.1</li><li>Android SDL 16 rev 2</li></ul><p>If you don&#8217;t see them, clear the cache of the SDK manager in the options</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/dev/small-issue-with-adt-20-and-sdk-16-and-how-to-fix-it/feed</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>How to add autocompletion to an EditText</title><link>http://android.foxykeep.com/dev/how-to-add-autocompletion-to-an-edittext</link> <comments>http://android.foxykeep.com/dev/how-to-add-autocompletion-to-an-edittext#comments</comments> <pubDate>Thu, 07 Jun 2012 08:01:10 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Développement]]></category> <category><![CDATA[AutoCompleteTextView]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=931</guid> <description><![CDATA[Finally after months and months of saying that I would add development articles to my blog, here is the first one :) EditText is a component that everybody knows and it is the primary way to get user input in &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/dev/how-to-add-autocompletion-to-an-edittext">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p><em>Finally after months and months of saying that I would add development articles to my blog, here is the first one :)</em></p><p><code>EditText</code> is a component that everybody knows and it is the primary way to get user input in an Android application.<br
/> What is really less known is its cousin : <a
href="http://developer.android.com/reference/android/widget/AutoCompleteTextView.html"><code>AutoCompleteTextView</code></a>. It&#8217;s a subclass of <code>EditText</code> that allows you to display possible autocompletions to the user depending on what he/she already entered in the <code>EditText</code>.</p><p>This article will focus on how to use this component and how to bind different data sources to provide the completions.</p><h3>1 &#8211; Presentation of AutoCompleteTextView and simple autocompletion</h3><p><code>AutoCompleteTextView</code> is used exactly the same way as an <code>EditText</code> in your layouts (as it&#8217;s a subclass of <code>EditText</code>). You just need to replace your <code>EditText</code> by an <code>AutoCompleteTextView</code> and this part is done !</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_layout.png" rel="lightbox[931]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_layout-300x153.png" alt="" title="actv_layout" width="300" height="153" class="aligncenter size-medium wp-image-980" /></a></p><p>Now that our layout is ready, let&#8217;s look at the code.</p><p>For this first example we are going to use a really simple example (based on the documentation of <code>AutoCompleteTextView</code> class in the Android SDK). The possible autocompletions are going to be a fixed list of countries.</p><div
class="wp_codebox_msgheader"><span
class="right"></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p931code8'); return false;">View Code</a> JAVA</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p9318"><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td
class="code" id="p931code8"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> COUNTRIES <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #0000ff;">&quot;Belgium&quot;</span>, <span style="color: #0000ff;">&quot;France&quot;</span>, <span style="color: #0000ff;">&quot;Italy&quot;</span>, <span style="color: #0000ff;">&quot;Germany&quot;</span>, <span style="color: #0000ff;">&quot;Spain&quot;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// In the onCreate method</span>
AutoCompleteTextView textView <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AutoCompleteTextView<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">actv_country</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ArrayAdapter<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> adapter <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayAdapter<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, android.<span style="color: #006633;">R</span>.<span style="color: #006633;">layout</span>.<span style="color: #006633;">simple_dropdown_item_1line</span>, COUNTRIES<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
textView.<span style="color: #006633;">setAdapter</span><span style="color: #009900;">&#40;</span>adapter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>We just have an array of <code>String</code>s as the data source and we just bind via an <code>ArrayAdapter</code> the list of countries> The component will manage them by itself.</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_login.png" rel="lightbox[931]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_login-168x300.png" alt="" title="actv_login" width="168" height="300" class="aligncenter size-medium wp-image-975" /></a></p><p>Now let&#8217;s look at a little more complex example.</p><h3>2 &#8211; Email autocompletion</h3><p>Let&#8217;s say we have a login screen in our application where the login is an email. An email is quite long and really annoying to type in, especially with a virtual keyboard.</p><p>We don&#8217;t know all the email addresses the user could potentially have. What we know however from his phone is all the email addresses he/she used as an account (Google, Facebook, Twitter, …).<br
/> We can use them as a data source to provide completion.</p><div
class="wp_codebox_msgheader"><span
class="right"></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p931code9'); return false;">View Code</a> JAVA</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p9319"><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td
class="code" id="p931code9"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> Pattern EMAIL_PATTERN <span style="color: #339933;">=</span> Pattern.<span style="color: #006633;">compile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;^[A-Z0-9._%+-]+@[A-Z0-9.-]+<span style="color: #000099; font-weight: bold;">\\</span>.[A-Z]{2,4}$&quot;</span>, Pattern.<span style="color: #006633;">CASE_INSENSITIVE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// In the onCreate method</span>
AutoCompleteTextView editTextLogin <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AutoCompleteTextView<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">actv_login</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Account<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> accounts <span style="color: #339933;">=</span> AccountManager.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAccounts</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Set<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> emailSet <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HashSet<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Account account <span style="color: #339933;">:</span> accounts<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>EMAIL_PATTERN.<span style="color: #006633;">matcher</span><span style="color: #009900;">&#40;</span>account.<span style="color: #006633;">name</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">matches</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		emailSet.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>account.<span style="color: #006633;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
editTextLogin.<span style="color: #006633;">setAdapter</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ArrayAdapter<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, android.<span style="color: #006633;">R</span>.<span style="color: #006633;">layout</span>.<span style="color: #006633;">simple_dropdown_item_1line</span>, <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span>emailSet<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div><p>This time instead of using a fixed array of <code>String</code>s, we load the user accounts through the <code>AccountManager</code>.<br
/> As some accounts may not have an email address linked to them, we filter them and keep only the ones who matches an email regex. We also use a <code>Set</code> to remove the duplicates.<br
/> Then we use the same way as before to bind them to the <code>AutoCompleteTextView</code> through an <code>ArrayAdapter</code>.</p><p>One thing to know if you want to use this snippet of code as is in your project : it requires the permission <code>android.permission.GET_ACCOUNTS</code> to be able to read the user accounts.</p><p>You can use this example with any other data source as long as you manage to get an array of <code>String</code>s to display.</p><p>And here is how it looks :<br
/> <a
href="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_email.png" rel="lightbox[931]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_email-168x300.png" alt="" title="actv_email" width="168" height="300" class="aligncenter size-medium wp-image-974" /></a></p><h3>3 &#8211; Webservice autocompletion</h3><p>For the first 2 examples, we only used static data. Now let&#8217;s use dynamic data for the auto-completion. The data is going to be returned from a web service which is going to be called every time the user input changes in the field.<br
/> For this example, we are going to write the code to add autocompletion to an address field :</p><div
class="wp_codebox_msgheader"><span
class="right"></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p931code10'); return false;">View Code</a> JAVA</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p93110"><td
class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
</pre></td><td
class="code" id="p931code10"><pre class="java" style="font-family:monospace;">AutoCompleteTextView editTextAddress <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AutoCompleteTextView<span style="color: #009900;">&#41;</span>findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">actv_address</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
editTextAddress.<span style="color: #006633;">setAdapter</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> AutoCompleteAdapter<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// And the corresponding Adapter</span>
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">class</span> AutoCompleteAdapter <span style="color: #000000; font-weight: bold;">extends</span> ArrayAdapter<span style="color: #339933;">&lt;</span>Address<span style="color: #339933;">&gt;</span> <span style="color: #000000; font-weight: bold;">implements</span> Filterable <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">private</span> LayoutInflater mInflater<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> Geocoder mGeocoder<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> StringBuilder mSb <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StringBuilder<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> AutoCompleteAdapter<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Acontext+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Context</span></a> context<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>context, <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		mInflater <span style="color: #339933;">=</span> LayoutInflater.<span style="color: #006633;">from</span><span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		mGeocoder <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Geocoder<span style="color: #009900;">&#40;</span>context<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	@Override
	<span style="color: #000000; font-weight: bold;">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 style="color: #003399;">View</span></a> getView<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> position, <span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aview+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">View</span></a> convertView, <span style="color: #000000; font-weight: bold;">final</span> ViewGroup parent<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">final</span> TextView tv<span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>convertView <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			tv <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>TextView<span style="color: #009900;">&#41;</span> convertView<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			tv <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>TextView<span style="color: #009900;">&#41;</span> mInflater.<span style="color: #006633;">inflate</span><span style="color: #009900;">&#40;</span>android.<span style="color: #006633;">R</span>.<span style="color: #006633;">layout</span>.<span style="color: #006633;">simple_dropdown_item_1line</span>, parent, <span style="color: #000066; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		tv.<span style="color: #006633;">setText</span><span style="color: #009900;">&#40;</span>createFormattedAddressFromAddress<span style="color: #009900;">&#40;</span>getItem<span style="color: #009900;">&#40;</span>position<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> tv<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">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 style="color: #003399;">String</span></a> createFormattedAddressFromAddress<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> Address address<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		mSb.<span style="color: #006633;">setLength</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000066; font-weight: bold;">int</span> addressLineSize <span style="color: #339933;">=</span> address.<span style="color: #006633;">getMaxAddressLineIndex</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> addressLineSize<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			mSb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>address.<span style="color: #006633;">getAddressLine</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">!=</span> addressLineSize <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				mSb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;, &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000000; font-weight: bold;">return</span> mSb.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	@Override
	<span style="color: #000000; font-weight: bold;">public</span> Filter getFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		Filter myFilter <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Filter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			@Override
			<span style="color: #000000; font-weight: bold;">protected</span> FilterResults performFiltering<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> CharSequence constraint<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				List<span style="color: #339933;">&lt;</span>Address<span style="color: #339933;">&gt;</span> addressList <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>constraint <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
						addressList <span style="color: #339933;">=</span> mGeocoder.<span style="color: #006633;">getFromLocationName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#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 style="color: #003399;">String</span></a><span style="color: #009900;">&#41;</span> constraint, <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">IOException</span></a> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>addressList <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					addressList <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>Address<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
&nbsp;
				<span style="color: #000000; font-weight: bold;">final</span> FilterResults filterResults <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FilterResults<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				filterResults.<span style="color: #006633;">values</span> <span style="color: #339933;">=</span> addressList<span style="color: #339933;">;</span>
				filterResults.<span style="color: #006633;">count</span> <span style="color: #339933;">=</span> addressList.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #000000; font-weight: bold;">return</span> filterResults<span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			@SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;unchecked&quot;</span><span style="color: #009900;">&#41;</span>
			@Override
			<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> publishResults<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> CharSequence contraint, <span style="color: #000000; font-weight: bold;">final</span> FilterResults results<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				clear<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Address address <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>List<span style="color: #339933;">&lt;</span>Address<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#41;</span> results.<span style="color: #006633;">values</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					add<span style="color: #009900;">&#40;</span>address<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>results.<span style="color: #006633;">count</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					notifyDataSetChanged<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
					notifyDataSetInvalidated<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			@Override
			<span style="color: #000000; font-weight: bold;">public</span> CharSequence convertResultToString<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a> resultValue<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">return</span> resultValue <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">?</span> <span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Address<span style="color: #009900;">&#41;</span> resultValue<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAddressLine</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> myFilter<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>As the data is dynamic depending on the current value, we can&#8217;t just provide beforehand the list of elements. Instead we create an <code>ArrayAdapter</code> with a special <code>Filter</code>.<br
/> Everytime the input changes, the <code>performFiltering</code> method is called and we retrieve in it the corresponding values from the webservice. These values are then transfered through the <code>FilterResults</code> object to the <code>publishResults</code> method where we replace the current elements with the new ones.</p><p>In our specific case, our webservice is the SDK <code>Geocoder</code> which calls the Maps server to get possible addresses based on input provided by the user.<br
/> As the result type, <code>Address</code>, is a complex object and we only want to display its formatted address while still keeping the object in the <code>Adapter</code> for further use, we also have to override both <code>getView</code> and <code>convertResultToString</code> methods :</p><ul><li>The first one, <code>getView</code>, to choose how to display our special object in the list of possible autocompletions.</li><li><code>convertResultToString</code> is used internally by the <code>AutoCompleteTextView</code> to choose what to display in the <code>EditText</code> field when the user selects one of the completions (in our case, the formatted address).</li></ul><p>If the data returned by your webservice is only a <code>String</code>, you don&#8217;t need to do that (except if you want a special format, like upper case or something).</p><p><strong>One thing to remember</strong>, the code in the <code>performFiltering</code> method is executed in a worker thread so we can directly access the webservice (in our case the <code>Geocoder</code>) to get the corresponding results even if it&#8217;s a long process.</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_address.png" rel="lightbox[931]"><img
src="http://android.foxykeep.com/wp-content/uploads/2012/06/actv_address-168x300.png" alt="" title="actv_address" width="168" height="300" class="aligncenter size-medium wp-image-976" /></a></p><h3>4 &#8211; Conclusion</h3><p>Normally now you know how to add autocompletion to your applications :)</p><p>If you have some questions about it, feel free to comment this article or to contact me via email !</p><p>And I have made a small application containing all these examples. Here is the <strong><a
href="http://android.foxykeep.com/wp-content/uploads/2012/06/AutoCompleteTextViewExample.apk">APK</a></strong> and the <strong><a
href="http://android.foxykeep.com/wp-content/uploads/2012/06/AutoCompleteTextViewExample.rar">project source code</a></strong>.</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/dev/how-to-add-autocompletion-to-an-edittext/feed</wfw:commentRss> <slash:comments>19</slash:comments> </item> <item><title>How to fix the &#8220;NoClassDefFoundError&#8221; with ADT 17</title><link>http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17</link> <comments>http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17#comments</comments> <pubDate>Thu, 22 Mar 2012 03:56:40 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Développement]]></category> <category><![CDATA[ADT]]></category> <category><![CDATA[Crash]]></category> <category><![CDATA[Library]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=899</guid> <description><![CDATA[So I updated my SDK and ADT to version 17 and once again I got a big problem :) Every project I have which use JAR libraries could still be built without problems but as soon as they start on the &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p>So I updated my SDK and ADT to version 17 and <a
title="How to fix the “Conversion to Dalvik format failed with error 1? with ADT 14" href="http://android.foxykeep.com/dev/fix-the-conversion-to-dalvik-format-failed-with-error-1-with-adt-14">once again</a> I got a big problem :)</p><p>Every project I have which use JAR libraries could still be built without problems but as soon as they start on the phone, they crashed with the following error :</p><pre>03-21 19:20:56.455: E/AndroidRuntime(24471): FATAL EXCEPTION: main
03-21 19:20:56.455: E/AndroidRuntime(24471): java.lang.NoClassDefFoundError: org.acra.ACRA
03-21 19:20:56.455: E/AndroidRuntime(24471): at com.foxykeep.myproject.HomeActivity.onCreate(MyProjectApplication.java:127)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3925)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.app.ActivityThread.access$1300(ActivityThread.java:122)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1184)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.os.Looper.loop(Looper.java:137)
03-21 19:20:56.455: E/AndroidRuntime(24471): at android.app.ActivityThread.main(ActivityThread.java:4340)
03-21 19:20:56.455: E/AndroidRuntime(24471): at java.lang.reflect.Method.invokeNative(Native Method)
03-21 19:20:56.455: E/AndroidRuntime(24471): at java.lang.reflect.Method.invoke(Method.java:511)
03-21 19:20:56.455: E/AndroidRuntime(24471): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-21 19:20:56.455: E/AndroidRuntime(24471): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-21 19:20:56.455: E/AndroidRuntime(24471): at dalvik.system.NativeStart.main(Native Method)</pre><p>I asked <a
href="https://plus.google.com/109385828142935151413/posts">Xavier Ducrohet</a> and <a
href="https://plus.google.com/116539451797396019960/posts">Tor Norbye</a> (both working on the ADT plugin) on <a
href="https://plus.google.com/u/0/104906570725395999813/posts/YZo89ujDhVd">Google+</a> about the error and they linked to <a
href="http://tools.android.com/recent/dealingwithdependenciesinandroidprojects">this page</a> which explains how to solve the problem but is not ultra clear (at least for me).</p><p>So here is the same solution but explained with screenshots so we can see more easily what changed  :</p><p
style="text-align: center;"><a
href="http://android.foxykeep.com/wp-content/uploads/2012/03/adt-17-bug-.png" rel="lightbox[899]"><img
class="aligncenter  wp-image-906" title="adt-17-bug-" src="http://android.foxykeep.com/wp-content/uploads/2012/03/adt-17-bug-.png" alt="" width="620" height="415" /></a></p><p>From left to right, we have :</p><ul><li>My project with ADT 16 <em>(the small graphic changes are due to the fact the left image is from Eclipse Windows while the 2 on the right are from Eclipse Mac)</em></li><li>My project with ADT 17 before the fix</li><li>My project with ADT 17 after the fix</li></ul><div>We can see :</div><div><ul><li>In <span
style="color: #0000ff;">blue<span
style="color: #000000;">, the changes due to the patch (more info on this at the end of this post)</span></span></li><li><span
style="color: #0000ff;"><span
style="color: #000000;">In <span
style="color: #ff0000;">red</span>, the changes for the fix</span></span></li></ul></div><p
style="text-align: left;">What I did to fix the bug was :</p><ul><li>Remove the libraries from the standard Java build path :</li><ul><li>Right click on the project name &gt; Properties &gt; Java Build Path &gt; tab Libraries &gt; remove everything except the &#8220;Android X.X&#8221; <em>(2.3.3 in my case)</em> and the &#8220;Android Dependencies&#8221;</li></ul><li>Rename the libraries folder from &#8220;lib&#8221; to &#8220;libs&#8221;</li><ul><li>By doing that, all the libraries in the folder &#8220;libs&#8221; are found by the Android plugin and are added to the &#8220;Android Dependencies&#8221; item of the project</li></ul><li>Clean the project (not exactly needed)</li><li><strong>You are good to go !</strong></li></ul><p>This problem is due to the fact that libraries are not managed the same way with the new ADT build.<br
/> Instead of having 2 different managements of libraries (one for Android Library Projects, one for the standard jars), now both are merged into the Android Dependencies item.</p><p>Other info, the <em>annotations.jar</em> file is for the new lint Java annotations (more info here : <a
href="http://tools.android.com/recent/ignoringlintwarnings">http://tools.android.com/recent/ignoringlintwarnings</a>)<br
/> Besides this small problem, the ADT version 17 looks really good and I love the new things added to the lint checks !!</p><p><em>[Update]</em></p><p><em>The DroidUX Team found another solution to fix the problem. I didn&#8217;t test it personally but it don&#8217;t see why it shouldn&#8217;t work : </em></p><blockquote><p>Hi,</p><p>Just to add to the solution:</p><p>If you have references to jars that are not in the ‘libs’ folder, for example if you use ‘classpath variable’, you can resolve the <code>NoClassDefFoundError</code> issue with the new ADT 17 by exporting the references.</p><p>To export the references: simply go to “Properties &gt; Java Build Path &gt; Order and Export”, and check all the references you want exported.</p><p>Cheers,</p><p>DroidUX Team</p></blockquote><p><em>[/Update]</em></p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17/feed</wfw:commentRss> <slash:comments>217</slash:comments> </item> <item><title>New Android Dead Zebra Figurines : Big Box edition</title><link>http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition</link> <comments>http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition#comments</comments> <pubDate>Wed, 08 Feb 2012 04:56:13 +0000</pubDate> <dc:creator>Foxykeep</dc:creator> <category><![CDATA[Figurines]]></category> <category><![CDATA[BugDroid]]></category> <category><![CDATA[Dead Zebra]]></category> <guid
isPermaLink="false">http://android.foxykeep.com/?p=877</guid> <description><![CDATA[I was parsing Ebay looking for a Rusty figurine from Serie 1 (only one I don&#8217;t have &#8230;) when I found what look like new Android Dead Zebra figurines : They looked like real ones but as I never heard &#8230;<p
class="read-more"><a
href="http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition">Read more &#187;</a></p>]]></description> <content:encoded><![CDATA[<p>I was parsing Ebay looking for a Rusty figurine from Serie 1 (only one I don&#8217;t have &#8230;) when I found what look like new Android Dead Zebra figurines :</p><p> <a
href='http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/attachment/android_3' title='android_3'><img
data-attachment-id="878" data-orig-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_3.jpg" data-orig-size="500,500" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="android_3" data-image-description="" data-medium-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_3-300x300.jpg" data-large-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_3.jpg" width="150" height="150" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android_3-150x150.jpg" class="attachment-thumbnail" alt="android_3" /></a> <a
href='http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/attachment/android_4' title='android_4'><img
data-attachment-id="879" data-orig-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_4.jpg" data-orig-size="500,500" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="android_4" data-image-description="" data-medium-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_4-300x300.jpg" data-large-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_4.jpg" width="150" height="150" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android_4-150x150.jpg" class="attachment-thumbnail" alt="android_4" /></a> <a
href='http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/attachment/android_5' title='android_5'><img
data-attachment-id="880" data-orig-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_5.jpg" data-orig-size="500,500" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="android_5" data-image-description="" data-medium-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_5-300x300.jpg" data-large-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_5.jpg" width="150" height="150" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android_5-150x150.jpg" class="attachment-thumbnail" alt="android_5" /></a> <a
href='http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/attachment/android_6' title='android_6'><img
data-attachment-id="881" data-orig-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_6.jpg" data-orig-size="500,500" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="android_6" data-image-description="" data-medium-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_6-300x300.jpg" data-large-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_6.jpg" width="150" height="150" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android_6-150x150.jpg" class="attachment-thumbnail" alt="android_6" /></a> <a
href='http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/attachment/android_1' title='android_1'><img
data-attachment-id="882" data-orig-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_1.jpg" data-orig-size="500,499" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="android_1" data-image-description="" data-medium-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_1-300x300.jpg" data-large-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_1.jpg" width="150" height="150" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android_1-150x150.jpg" class="attachment-thumbnail" alt="android_1" /></a> <a
href='http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/attachment/android_2' title='android_2'><img
data-attachment-id="883" data-orig-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_2.jpg" data-orig-size="500,499" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}" data-image-title="android_2" data-image-description="" data-medium-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_2-300x300.jpg" data-large-file="http://android.foxykeep.com/wp-content/uploads/2012/02/android_2.jpg" width="150" height="150" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android_2-150x150.jpg" class="attachment-thumbnail" alt="android_2" /></a> <br
/> They looked like real ones but as I never heard of them, I sent a tweet to @DeadZebra to know if there were fakes or new models and here is what he tweeted 10  minutes later :</p><p
style="text-align: center;"><a
href="http://android.foxykeep.com/wp-content/uploads/2012/02/android-deadzebra-answer1.png" rel="lightbox[877]"><img
class="aligncenter size-full wp-image-886" title="android-deadzebra-answer" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android-deadzebra-answer.png" alt="" width="537" height="228" /></a></p><p><del>So it seems that they are real ones and that they are going to be available soon ! I don&#8217;t know if these are the only models or if there is going to be more. I don&#8217;t know either if they are part of the Serie 3 &#8230; Anyway as soon as I have more information I&#8217;ll update this post.</del></p><p>Update : @DeadZebra just gave more information these models. The edition is called <strong>Big Box</strong> and is going to be sold by major retailers starting with UO (Urban Outfitter I think &#8230;), then Barnes &amp; Noble, Frys, &#8230;</p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/02/android-deadzebra-answer-2.png" rel="lightbox[877]"><img
class="aligncenter size-full wp-image-887" title="android-deadzebra-answer-2" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android-deadzebra-answer-2.png" alt="" width="522" height="215" /></a></p><p><a
href="http://android.foxykeep.com/wp-content/uploads/2012/02/android-deadzebra-answer-3.png" rel="lightbox[877]"><img
class="aligncenter size-full wp-image-885" title="android-deadzebra-answer-3" src="http://android.foxykeep.com/wp-content/uploads/2012/02/android-deadzebra-answer-3.png" alt="" width="526" height="215" /></a></p><p>It seems they are already available in some shops. And I don&#8217;t have a price yet &#8230; if anybody find it :]</p> ]]></content:encoded> <wfw:commentRss>http://android.foxykeep.com/figurines/new-android-dead-zebra-figurines-big-box-edition/feed</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>
<!-- Dynamic page generated in 1.876 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-06-20 11:00:58 -->

<!-- Compression = gzip -->