diff options
Diffstat (limited to 'src/com/android/deskclock/worldclock/CitiesActivity.java')
-rw-r--r-- | src/com/android/deskclock/worldclock/CitiesActivity.java | 54 |
1 files changed, 17 insertions, 37 deletions
diff --git a/src/com/android/deskclock/worldclock/CitiesActivity.java b/src/com/android/deskclock/worldclock/CitiesActivity.java index ffabc76fb..02423b5a1 100644 --- a/src/com/android/deskclock/worldclock/CitiesActivity.java +++ b/src/com/android/deskclock/worldclock/CitiesActivity.java @@ -21,7 +21,6 @@ import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.format.DateFormat; @@ -40,16 +39,13 @@ import android.widget.TextView; import com.android.deskclock.Alarms; import com.android.deskclock.DeskClock; -import com.android.deskclock.Log; import com.android.deskclock.R; import com.android.deskclock.SettingsActivity; import com.android.deskclock.Utils; import java.text.Collator; import java.util.ArrayList; -import java.util.Arrays; import java.util.Calendar; -import java.util.Comparator; import java.util.HashMap; import java.util.TimeZone; @@ -68,8 +64,6 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, private CityAdapter mAdapter; private HashMap<String, CityObj> mUserSelectedCities; private Calendar mCalendar; - private final Collator mCollator = Collator.getInstance(); - /*** * Adapter for a list of cities with the respected time zone. @@ -98,12 +92,12 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public int getCount() { - return mAllTheCitiesList.length; + return (mAllTheCitiesList != null) ? mAllTheCitiesList.length : 0; } @Override public Object getItem(int p) { - if (p >=0 && p < mAllTheCitiesList.length) { + if (mAllTheCitiesList != null && p >=0 && p < mAllTheCitiesList.length) { return mAllTheCitiesList [p]; } return null; @@ -116,12 +110,12 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public boolean isEnabled(int p) { - return ((CityObj)mAllTheCitiesList[p]).mCityId != null; + return mAllTheCitiesList != null && ((CityObj)mAllTheCitiesList[p]).mCityId != null; } @Override public View getView(int position, View view, ViewGroup parent) { - if (position < 0 || position >= mAllTheCitiesList.length) { + if (mAllTheCitiesList == null || position < 0 || position >= mAllTheCitiesList.length) { return null; } CityObj c = (CityObj)mAllTheCitiesList [position]; @@ -157,27 +151,10 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, } private void loadCitiesDataBase(Context c) { - Resources r = c.getResources(); - // Read strings array of name,timezone, id - // make sure the list are the same length - String [] cities = r.getStringArray(R.array.cities_names); - String [] timezones = r.getStringArray(R.array.cities_tz); - String [] ids = r.getStringArray(R.array.cities_id); - if (cities.length != timezones.length || ids.length != cities.length) { - Log.wtf("City lists sizes are not the same, cannot use the data"); + CityObj[] tempList = Utils.loadCitiesDataBase(c); + if (tempList == null) { return; - } - CityObj[] tempList = new CityObj [cities.length]; - for (int i = 0; i < cities.length; i++) { - tempList[i] = new CityObj(cities[i], timezones[i], ids[i]); - } - // Sort alphabetically - Arrays.sort(tempList, new Comparator<CityObj> () { - @Override - public int compare(CityObj c1, CityObj c2) { - return mCollator.compare(c1.mCityName, c2.mCityName); - } - }); + } //Create section indexer and add headers to the cities list String val = null; ArrayList<String> sections = new ArrayList<String> (); @@ -207,18 +184,21 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, @Override public int getPositionForSection(int section) { - return (Integer) mSectionPositions[section]; + return (mSectionPositions != null) ? (Integer) mSectionPositions[section] : 0; } @Override public int getSectionForPosition(int p) { - for (int i = 0; i < mSectionPositions.length - 1; i++) { - if (p >= (Integer)mSectionPositions[i] && p < (Integer)mSectionPositions[i + 1]) { - return i; + if (mSectionPositions != null) { + for (int i = 0; i < mSectionPositions.length - 1; i++) { + if (p >= (Integer) mSectionPositions[i] + && p < (Integer) mSectionPositions[i + 1]) { + return i; + } + } + if (p >= (Integer)mSectionPositions[mSectionPositions.length - 1]) { + return mSectionPositions.length - 1; } - } - if (p >= (Integer)mSectionPositions[mSectionPositions.length - 1]) { - return mSectionPositions.length - 1; } return 0; } |