android - How to refresh / redraw GridView from OnSharedPreferenceChangeListener without data change? -


i have grid view inside fragment showing images (works fine). there preference set number of columns in grid view.

ssharedpreferencechangelistener =             new sharedpreferences.onsharedpreferencechangelistener() {                 @override                 public void onsharedpreferencechanged(sharedpreferences sharedpreferences, string key) {                     log.i(" onsharedprefchanged",  "for preferences");                     // if column number preference changed                     if (key.equals(mcontext.getstring(r.string.pref_columns_key))) {                         // read saved number of columns                         mcolumns = integer.parseint(sharedpreferences.getstring(key,                                 mcontext.getstring(r.string.pref_columns_default)));                         log.i(" columns", mcolumns + "");                         // set mgridview number of columns correspond                         setgridview();                     }                 }             }; 

the preference working fine - can see changes should using log. , set grid view with:

private void setgridview() {     int displaywidth = utility.getdisplaywidth(mcontext);     float displaydensity = utility.getdisplaydensity(mcontext);     int spacing = (int) (utility.spacing * displaydensity);     int columnwidth = (displaywidth - spacing * (mcolumns + 1))/ mcolumns ;     mgridview.setpadding(spacing, spacing, spacing, spacing);     mgridview.sethorizontalspacing(spacing);     mgridview.setverticalspacing(spacing);     mgridview.setnumcolumns(mcolumns);     // set gridview column width corresponding poster size     mgridview.setcolumnwidth(columnwidth); } 

browsing stackoverflow answers, have tried add bunch of different functions before , after setgridview() try force grid view refresh / redraw when come fragment after changing preference, including:

 mgridview.refreshdrawablestate();   mgridview.destroydrawingcache();   mgridview.invalidateviews(); // on rotation causes staledataexception:                                 // attempting access closed cursorwindow 

what have noticed that:

1) on rotation (activity/fragment recreation) grid view columns set corresponding mcolumns containing preferred number of columns;

2) have tried set mgridview.setvisibility(view.gone) have noticed doesn't work either.

my questions are:

  1. can please explain behavior inside onsharedpreferencechangelistener. why can't set visibility of grid view gone there?

  2. how refresh grid view onsharedpreferencechangelistener?


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -