All:

So I realized my date/time is already formatted by time zone and re-adding
the default time zone was subtracting the time zone offset again from the
time!  So, new code to replace the formatting function is below:

        Date date = df.parse(dateTime);
                                 
        if (sdk < 3) {

                finalDateTime = df.format(date);
                                         
        } else {

                finalDateTime = DateUtils.getRelativeDateTimeString(this,
date.getTime(), dateMin, dateMax, dateFlags).toString();

        }

So, why is it called "reflection" anyways?  Is it like "reflecting" on all
those previous SDK versions and thinking about the special times we had w/
them?

Thanks,
Nick Owens
VP, ThreeClix
Office: (904) 429-7039
Mobile: (847) 565-9392
After Hours: (904) 540-5830


-----Original Message-----
From: Nick Owens [mailto:nicow...@gmail.com] 
Sent: Thursday, February 25, 2010 5:38 PM
To: 'android-developers@googlegroups.com'
Subject: RE: [android-developers] Re: FormatDateTime

Mark (et. al. interested parties):

Thank you for the example on reflection.  I got it working and thought it
might be prudent to share my results w/ the world so the completed code is
below.  For the record, this date value (as a string) is being retrieved
from a SQLite database and the function formatDateTime() is used in a custom
adapter for display of the date for each record in a ListView.

This compiles in Eclipse using Android 1.5.  This allows me to set a minimum
sdk version of 2, while still utilizing this really nifty date display
function.

----------------------------------------------------------------------------
------------
public class ResourcesList extends ListActivity {

        ...

        int sdk = new Integer(Build.VERSION.SDK).intValue();

        private static final long dateMin = 60000;
        private static final long dateMax = (86400000 * 2);
        private static final int dateFlags = 0;

        ...

        public String formatDateTime(String dateTime) {
                 
                if (dateTime == null) {
                         
                        return "Never";
                         
                } else {
                         
                        String finalDateTime;
                         
                        DateFormat df = new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss");
                         
                        try {
                                 
                                Date date = df.parse(dateTime);
                                 
                                if (sdk < 3) {

                                        finalDateTime = df.format(date);
                                         
                                } else {

                                        long when = date.getTime();
                                         
                                        finalDateTime =
DateUtils.getRelativeDateTimeString(this, (when +
TimeZone.getDefault().getOffset(when)), dateMin, dateMax,
dateFlags).toString();

                                }
                                 
                        } catch (Exception e) {

                                finalDateTime = "Unknown";
                                 
                        }
                         
                        return finalDateTime;
                         
                 }

         }

        ...

}

Thanks,
Nick Owens
VP, ThreeClix
Office: (904) 429-7039
Mobile: (847) 565-9392
After Hours: (904) 540-5830


-----Original Message-----
From: android-developers@googlegroups.com
[mailto:android-develop...@googlegroups.com] On Behalf Of Mark Murphy
Sent: Thursday, February 25, 2010 4:23 PM
To: android-developers@googlegroups.com
Subject: Re: [android-developers] Re: FormatDateTime

Nick Owens wrote:
> On another note, is it possible to provide a conditional instruction for
> formatting date/time based on the user's Android package:
> 
> if (package > 1.1)  {
> 
>   //cooler date time format
> 
> } else {
> 
>   //regular date time format
> 
> }

Yes, either via reflection or via conditional class loading.

> Let me guess?  It is technically possible, but not in Eclipse since
Eclipse
> won't even let it compile w/ a function that doesn't compile.

No, it should work fine. However, you need to compile for the higher
version.

> Or can I
> build it for Android 1.2 but allow users of 1.1 to download it by
specifying
> a different min-SDK level than it is built for?

Dunno. What's Android 1.2? :-)

> If so, can I write a
> conditional instruction based on the device's SDK level?

Yes, either via reflection or via conditional class loading.

This was discussed here:

http://stackoverflow.com/questions/2312321/how-to-use-contacts-api-for-andro
id-1-x-and-2-x-simultaneously

and here:

http://stackoverflow.com/questions/2044985/android-contactscontract-and-buil
ding-across-multiple-sdk-versions

Some sample projects are here:

http://github.com/commonsguy/cw-advandroid/tree/master/Contacts/Pick/
http://github.com/commonsguy/cw-advandroid/tree/master/Contacts/Spinners/

First one uses reflection, second one uses conditional class loading.

Here are two more samples:

http://github.com/commonsguy/cw-android/tree/master/APIVersions/

-- 
Mark Murphy (a Commons Guy)
http://commonsware.com | http://twitter.com/commonsguy

Warescription: Three Android Books, Plus Updates, One Low Price!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to