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

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -