java - Can't retrieve Double from HashMap<Integer, Double> -
somehow can't retrieve double hashmap i've made using gson.
map<integer, double> ratingmap = (map<integer, double>) new gsonbuilder() .create().fromjson(json, map.class); integer ifilmid = filmid; double rating = ratingmap.get(ifilmid);
in code i've veried ratingmap contains {2=5.0}, when ratingmap.get(ifilmid)
(where i've verified ifilmid in fact 2), variable rating
null. missing here?
i create hashmap in following way:
if (json.equals("")) { // noting ever saved ratingmap = new hashmap<integer, integer>(); ratingmap.put(filmid, rating); } else { ratingmap = (map<integer, integer>) new gsonbuilder().create() .fromjson(json, map.class); ratingmap.put(integer.valueof(filmid), rating); }
i let gson format integer double, , seems work fine can't retrieve it.
the total code, including saving androids sharedpreferences
public void saverating(int rating, int filmid) { sharedpreferences sharedpref = context.getsharedpreferences( local_mem_key, 0); string json = sharedpref.getstring(local_map_rating_key, ""); map<integer, integer> ratingmap; if (json.equals("")) { // noting ever saved ratingmap = new hashmap<integer, integer>(); ratingmap.put(filmid, rating); } else { ratingmap = (map<integer, integer>) new gsonbuilder().create() .fromjson(json, map.class); ratingmap.put(integer.valueof(filmid), rating); } json = new gsonbuilder().create().tojson(ratingmap, map.class); sharedpreferences.editor editor = sharedpref.edit(); editor.putstring(local_map_rating_key, json); editor.commit(); } /* * returns null if no rating found */ public map<integer, integer> getratingfor(int filmid) { sharedpreferences sharedpref = context.getsharedpreferences( local_mem_key, 0); string json = sharedpref.getstring(local_map_rating_key, ""); if (json.equals("")) { return null; } map<integer, integer> ratingmap = (map<integer, integer>) new gsonbuilder() .create().fromjson(json, map.class); log.d("map", ratingmap.tostring()); integer ifilmid = filmid; integer rating = ratingmap.get(ifilmid); if(rating == null) { //because of have prevent 0 rating return null; } else { map<integer, integer> returnmap = new hashmap<integer, integer>(); returnmap.put(filmid, rating.intvalue()); return returnmap; } }
make sure not passing null variable when saving
saverating(int rating, int filmid){ log.d(tag, string.valueof(rating)); }
if (json.equals("")) { // noting ever saved ratingmap = new hashmap<integer, double>(); <--- double not integer ratingmap.put(filmid, 5.0); } else { ratingmap = (map<integer, double>) new gsonbuilder().create() .fromjson(json, map.class); <--- double not integer ratingmap.put(integer.valueof(filmid), 5.0); }
make sure when using doubles to
use 5.0
not 5
Comments
Post a Comment