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

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -