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:
can please explain behavior inside onsharedpreferencechangelistener. why can't set visibility of grid view gone there?
how refresh grid view onsharedpreferencechangelistener?
Comments
Post a Comment