diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterAdapter.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterAdapter.java index a09dfbaa6..46bacbd19 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterAdapter.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterAdapter.java @@ -40,4 +40,9 @@ public class PeopleFilterAdapter extends FilterAdapter { public void unregisterRecevier() { activity.unregisterReceiver(filterReceiver); } + + @Override + protected boolean shouldDirectlyPopulateFilters() { + return false; + } } diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java index 5cc493388..14f22ce75 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedListFilterAdapter.java @@ -37,6 +37,11 @@ public class FeaturedListFilterAdapter extends FilterAdapter { activity.unregisterReceiver(filterReceiver); } + @Override + protected boolean shouldDirectlyPopulateFilters() { + return false; + } + @Override public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent); diff --git a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java index 7e01d1813..271cbbfbd 100644 --- a/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/astrid/src/com/todoroo/astrid/adapter/FilterAdapter.java @@ -357,6 +357,10 @@ public class FilterAdapter extends ArrayAdapter { return selection; } + protected boolean shouldDirectlyPopulateFilters() { + return true; + } + /* ====================================================================== * ============================================================= receiver * ====================================================================== */ @@ -381,13 +385,26 @@ public class FilterAdapter extends ArrayAdapter { @Override public void onReceive(Context context, Intent intent) { try { - for (ResolveInfo filterExposerInfo : filterExposerList) { - String className = filterExposerInfo.activityInfo.name; - AstridFilterExposer filterExposer = null; - filterExposer = (AstridFilterExposer) Class.forName(className, true, FilterAdapter.class.getClassLoader()).newInstance(); - - if (filterExposer != null) { - populateFiltersToAdapter(filterExposer.getFilters()); + if (shouldDirectlyPopulateFilters()) { + for (ResolveInfo filterExposerInfo : filterExposerList) { + String className = filterExposerInfo.activityInfo.name; + AstridFilterExposer filterExposer = null; + filterExposer = (AstridFilterExposer) Class.forName(className, true, FilterAdapter.class.getClassLoader()).newInstance(); + + if (filterExposer != null) { + populateFiltersToAdapter(filterExposer.getFilters()); + } + } + } else { + try { + Bundle extras = intent.getExtras(); + extras.setClassLoader(FilterListHeader.class.getClassLoader()); + final Parcelable[] filters = extras.getParcelableArray(AstridApiConstants.EXTRAS_RESPONSE); + populateFiltersToAdapter(filters); + } catch (Exception e) { + Log.e("receive-filter-" + //$NON-NLS-1$ + intent.getStringExtra(AstridApiConstants.EXTRAS_ADDON), + e.toString(), e); } } } catch (Exception e) {