android - java.util.HashMap cannot be cast to Object -
this class usermodel
public class usermodel { private string username; private string password; public usermodel(string username, string password) { this.username = username; this.password = password; } public string getusername() { return username; } public string getpassword() { return password; } } this way data firebase
userreference.addvalueeventlistener(new valueeventlistener() { @override public void ondatachange(datasnapshot datasnapshot) { hashmap<string, usermodel> usermodelhashmap = (hashmap<string, usermodel>) datasnapshot.getvalue(); arraylist<usermodel> usermodellist = new arraylist<>(usermodelhashmap.values()); if (usermodellist.size() != 0) { log.d(tag, "ondatachange: " + usermodellist.get(0)); } } @override public void oncancelled(databaseerror databaseerror) { } }); it logs successfully.
ondatachange: {password=abcde, username=1234}
everything seems ok until want log more detail
log.d(tag, "ondatachange: " + usermodellist.get(0).getusername()); and here error of line after change code
java.lang.classcastexception: java.util.hashmap cannot cast qklahpita.vn.testfirebasedemo.usermodel
i cannot understand why getusername() wrong. if usermodellist.get(0) not return usermodel, return?
it because data getting in form of 'hashmap' , not 'usermodel'.you can create objects instead.
usermodel usermodel = datasnapshot.getvalue(usermodel.class); edit : need loop through children if there multiple users. this.
for(datasnapshot usersnapshot : datasnapsot.getchildren(){ usermodel usermodel = usersnapshot.getvalue(usermodel.class); }
Comments
Post a Comment